数组做为函数参数时的几种情况

摘自C程序设计(第三版),谭浩强

如果有一个实参数组,要想在函数中改变此数组中的元素的值,实参和形参的对应关系有4种情况。

1.形参和实参都用数组名

 1 void main()
 2 {
 3     int a[10];
 4     ...
 5     f(a,10)   
 6 }
 7 
 8 void f(int x[],int n)
 9 {
10  ...   
11 }
12 
13 //由于形参数组名接收了实参数组首元素的地址,因此可以认为在函数调用期间,形参数组与实//参数组共用一段内存单元,这种形式比较好理解
View Code

2.实参用数组名,形参用指针变量

 1 void main()
 2 {
 3     int a[10];
 4     ...
 5     f(a,10)   
 6 }
 7 
 8 void f(int *x,int n)
 9 {
10  ...   
11 }
12 
13 //实参a为数组名,形参x指向整型变量的指针变量,函数开始执行时,x指向a[0],x=&a[0],//通过x值的改变,可以指向a数组的任一元素。
View Code

3.实参形参都用指针变量

 1 void main()
 2 {
 3     int a[10];
 4     int *p = a;
 5     ...
 6     f(p,10)   
 7 }
 8 
 9 void f(int  *x,int n)
10 {
11  ...   
12 }
View Code

4.实参为指针变量,形参为数组名

 1 void main()
 2 {
 3     int a[10];
 4     int *p = a;
 5     ...
 6     f(p,10)   
 7 }
 8 
 9 void f(int x[],int n)
10 {
11  ...   
12 }
13 
14 //形参x为数组名,编译系统把x作为指针变量处理
View Code
原文地址:https://www.cnblogs.com/victoria-c/p/6258671.html