c语言:数据作为参数的问题

来源:百度知道 编辑:UC知道 时间:2024/06/22 16:13:10
int f(int a[], int n)
{ if (n >= 1) return f(a, n-1)+a[n-1];
else return 0;
}
第一行函数f第一个参数:整形数组,
第二行f函数第一个参数咋试数组首地址啦?这样也可以吗?
这是书上的例子
这一点谭浩强的c哪章有讲呢?

这个有个关键问题:当数组作为函数参数传入时,会退化成指针。
所以int f(int a[], int n)和int f(int *a, int n)实际上是一样的
当你调用f(a, n-1)时,a在函数f中都被当成指针(地址)处理了

一个道理,你把第一行改成int f(int *a,int n)也可以,a[]就是代表了一个指针。

数组参数实际上就是传递数组的首元素地址。

可以这样用。