【发布时间】:2012-07-13 02:19:56
【问题描述】:
#include <stdio.h>
int main(){
int a[4];
int b[4],i;
a[0] = 4;
a[1] = 3;
a[2] = 2;
a[3] = 1;
memcpy(&b, &a, sizeof(a));
for (i = 0; i < 4; i++){
printf("b[%d]:%d",i,b[i]);
}
printf("%d",sizeof(b));
}
回答:
b[0]:4b[1]:3b[2]:2b[3]:116
Exited: ExitFailure 2
我得到了正确的答案。但是在退出时出现异常:ExitFailure 2.
这种使用memcpy复制数组数据的方式不对吗?
【问题讨论】:
-
尝试在末尾添加
return 0;。 -
您在这里使用
memcpy有点错误,您不需要地址运算符(&),因为类型数组与类型指针兼容,所以memcpy(b, a, sizeof(a));就够了。 -
你是对的。我在 codepad.org 中执行。所以我没有收到缺少返回值的错误消息。
-
但是使用 & 作为数组类型也会给我一个数组的地址。
-
&对于数组是可选的。我总是把它放在一边。但是对于指针,显然是不同的。
标签: c