摘自C程序设计(第三版),谭浩强数组
若是有一个实参数组,要想在函数中改变此数组中的元素的值,实参和形参的对应关系有4种状况。ide
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 //因为形参数组名接收了实参数组首元素的地址,所以能够认为在函数调用期间,形参数组与实//参数组共用一段内存单元,这种形式比较好理解
2.实参用数组名,形参用指针变量spa
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数组的任一元素。
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 }
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做为指针变量处理