这是我的场景。
struct X {
char A[10];
int foo;
};
struct X *x;
char B[10]; // some content in it.
x = malloc(sizeof(struct X));
要将B
中的内容复制到A
,为什么下面的语法是正确的:
memcpy(x->A, B, sizeof(x->A));
这里x->A
被视为指针,所以我们不需要&
。但是我们应该需要 sizeof(*x->A)
对吗?但是使用 *
它不起作用,而没有 *
它工作正常。
sizeof
运算符是否不会将 A
视为指针?
最佳答案
A
不是指针,而是数组。所以 sizeof(x->A)
是正确的语法,它是整个数组的大小,即 10
。
确实,在许多情况下,数组名称会转换为指向第一个元素的指针。但 sizeof(arrayname)
不是其中之一。
关于c - Memcpy 到 malloced 结构内的数组中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21719340/