使用memcpy将数据复制到数组中

Ang*_*gus 3 c

#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));
}
Run Code Online (Sandbox Code Playgroud)

ANS:

b[0]:4b[1]:3b[2]:2b[3]:116
Exited: ExitFailure 2
Run Code Online (Sandbox Code Playgroud)

我得到了正确的答案.但是获得Exited:ExitFailure 2的异常.

这种使用memcpy复制数组数据的方法是错误的吗?

Mys*_*ial 6

尝试return 0;在最后添加一个main().

省略返回值可能导致函数返回堆栈垃圾.(那不是0)

因此,测试应用程序/脚本在看到非零返回值时会抱怨失败.


在C99之前,省略该return语句是技术上未定义的行为.从C99开始,0如果省略则默认为.

更多细节在这里:为什么main不会在这里返回0?