C:用memcpy创建一个数组数组

时间:2017-04-07 18:30:01

标签: c arrays

我正在尝试创建并填充数组数组。这是我写的代码:

int b[4] = {100, 100, 200, 300};
int a[2][4];

int main(){
    memcpy(a[0], b, sizeof(int));
    printf("%i", a[0][2]);

我应该 200 ,但我得 0 ...我该如何解决?

3 个答案:

答案 0 :(得分:2)

它应该是正确的b数组大小吗?

memcpy(a[0], b, sizeof(int) * 4);

答案 1 :(得分:2)

你只是从b复制一个int。您需要将所有b复制到[0]这样的

int b[4] = {100, 100, 200, 300};
int a[2][4];

int main(){
    memcpy(a[0], b, sizeof(b));
    printf("%i", a[0][2]);
}

答案 2 :(得分:1)

<强>替换

memcpy(a[0], b, sizeof(int));

<强>与

memcpy(a[0], b, sizeof(b));

<强>原因

您只是通过指定1个整数的大小来复制1个整数,即b中的第一个元素。但是如果你需要复制b中的所有元素,你需要指定所有元素的大小或者只是b的大小。