0

我正在学习 C,我的一个函数(此处未显示)取决于两个相同的数组。我有一个数组并且正在尝试生成一个副本,但是发生的情况是两个数组在复制后都充满了 0。我不知道这是怎么发生的.. 任何人都可以帮助解释为什么会发生这种情况并提供如何正确执行的解决方案吗?

#include <stdio.h>

int main(){

    int array[5]={3,2,7,4,8};
    int other_array[5]={0,0,0,0,0};

    for (int i=0; i<5; i++) array[i]=other_array[i];    //Copies array into other_array

    printf("array is:\n");
    for (int j=0; j<5; j++) printf("%d", array[j]);
    printf("\nother_array is:\n");
    for (int i=0; i<5; i++) printf("%d", other_array[i]);
    printf("\n");

    return 0;
}

/*
When run this yields
**********************
array is:
00000
other_array is:
00000
*/
4

3 回答 3

6
//Copies array into other_array
for (int i=0; i<5; i++) array[i]=other_array[i];    

尝试:

other_array[i] = array[i];

赋值运算符将右操作数的值赋给左操作数中的对象。而不是相反。

另外,正如其他答案中所说:

printf("\nother_array is:\n");
for (int i=0; i<5; i++) printf("%d", array[i]);

您正在打印array而不是other_array.

于 2013-04-21T20:51:11.187 回答
2

你打印了错误的数组,你打印array了两次

printf("array is:\n");
for (int j=0; j<5; j++) printf("%d", array[j]);
printf("\nother_array is:\n");
for (int i=0; i<5; i++) printf("%d", other_array[i]);//<-- here
printf("\n");
于 2013-04-21T20:52:05.747 回答
0

当然你可以只写:

int main(){

    int array[]       = { 3, 2, 7, 4, 8};
    int other_array[] = { 0, 0, 0, 0, 0};

    memcpy(other_array, array, sizeof other_array);

    /* then print */

}

然后#include <assert.h>

assert(sizeof array == sizeof other_array)
于 2013-04-21T20:55:32.067 回答