我正在尝试将数组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确实包含非零值)
答案 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 );
}