c - Memcpy 到 malloced 结构内的数组中

标签 c arrays pointers sizeof memcpy

这是我的场景。

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/

相关文章:

c - 在 C 中比较字符串的最快方法

mysql - Laravel 过滤多个WhereIn 数组

java - 在c/c++中获取java对象的内存地址

c - 未定义对 pthreads 中运行器的引用

我可以在 C 中使用三元运算符为字符串赋值吗?

c - 递归连接两个整数

java - 使用行、列和字符的输入创建形状以填充形状时出现问题

java - Java中的查找表

c - C中这些形式参数的含义

c++ - (*rhs.m_pData) 的含义