在 C 语言中,我想将
array A
复制到 array B
,并附加约束,即在 B
中,应删除 A
的最后一个元素。
我可以动态地将
B
的指针设置为A
,但不知何故使数组只扩展到内存地址&A - sizeof(A[0])
?怎么样?
谢谢!
您可以使用 memcpy() 在数组之间复制数据:
size_t B_len = sizeof *A - sizeof *A;
memcpy(B, A, B_len);
这使 B 保持在您开始时必须使用的任何大小。
如果
A
是指向(动态分配的)数组的指针,那么您需要数组的大小或长度才能确定要复制多少字节。您需要 malloc()
或 realloc()
来为 B
动态分配大小合适的数组。例如:
#include <stdlib.h>
int main() {
int A[] = {0, 1, 2};
size_t B_len = sizeof *A - sizeof *A;
int *B = malloc(B_len);
// TODO: handle error of B == NULL here
memcpy(B, A, B_len);
free(B);
}