C语言 一维数组 实参与形参与指针的问题

#include <stdio.h>
void sa(int a[],int n)
{
int i, j, k, c;
for (i = 0;i <= 3;i++)
{
k = i;
for (j = i + 1;j <= n;j++)
if (a[j] > a[k])
k = j;
c = a[i];
a[i] = a[k];
a[k] = c;
}
}
int main()
{
int n, a[5], i;
printf("please input n:\n");
scanf_s("%d", &n);
printf("please input 5 numbers:\n");
for (i = 0;i <= 4;i++)
scanf_s("%d", &a[i]);
sa(a, n);
for (i = 0;i <= 4;i++)
printf("%4d", a[i]);
getchar();
getchar();
return 0;
}
这个是选择排序法的程序,我有疑问的是把a[0]的地址给子函数的形参a[](也就是*a),那是不是这个时候相当于int a[0],C prime plus上说“它获得了该数组的首元素的地址,知道要在该位置找出一个整数”,这句话要怎么理解,为什么知道要在该位置找出整数

实参是a,它可以作为指针名使用,等同于指向首元a[0]的指针。形参int a[]等价于int *a,它指向实参a数组的首元a[0]的地址。
温馨提示:答案为网友推荐,仅供参考
相似回答