当我运行此程序时-
#include <stdio.h>
void inc( int num[], int n)
{
int i;
n++;
for(i=0;i<10;i++)
num[i]++;
}
int main()
{
int arr[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 0};
int a=2;
inc (arr, a);
int i;
for(i=0;i<10;i++)
printf("%d ", arr[i]);
printf("\n%d ", a);
return 0;
}
我得到了输出-
2 3 4 5 6 7 8 9 10 1
2
我理解为什么int不变,但是我不理解为什么数组被更改,因为我没有使用指针来调用数组。我知道该函数将制作n的另一个副本并分配n = a,并且所有更改将仅发生在n上,而a将保持不变。为什么要更改数组?
答案 0 :(得分:0)
在C语言中,除了few cases之外,数组名称会衰减(=隐式转换)为指向其第一个元素的指针。
此
void inc(int num[], int n)
与此完全相同:
void inc(int *num, int n)