试图复制数组的内容

时间:2015-01-20 03:38:23

标签: c arrays pointers

我正在尝试将数组a中的内容复制到数组b。当我在函数中测试它似乎复制,但是当我在主程序中打印出b时,它显示为0

void array_copy(int a[], int b[], int n) {

for (int j = 0; j < n; j++) {
    b = a;
    //printf("%d\n", *b);
    a++;
    b++;
}

然后当我尝试打印到外面测试时,我得到0

printf("%d", *b);

任何想法为什么我得到0而不是应该在那里。 (我确保数组a确实包含非零值)

2 个答案:

答案 0 :(得分:2)

b = a;

此行使指针b指向a指向的同一位置。你想要的(复制内容)应该是:

*b = *a;

答案 1 :(得分:1)

试试这个:

void array_copy(int a[], int b[], int n) 
{
    int j=0;
    for ( j = 0; j < n; j++) 
    {
        *b = *a; /*  * will give the value */
        printf("%d\n", *b);
        a++;
        b++;
    }
}

int main ( void )
{
    int a[5] = {1,2,3,4,5};
    int b[5];
    array_copy (a, b, 5 );
    return ( 0 );
}