C语言程序的疑惑?

Python09

C语言程序的疑惑?,第1张

因为这里的形参,传入的是int x[ ],所以它传入的实际上是实参a数组的首地址,所以形参得到的就是的主程序中数组的首地址。这也就可以解释在inv()中改变的x数组元素的顺序,能够影响到main()函数中的a数组了。

程序没有问题。

这是个数组反序函数。函数名 inv,有2个形式参数,int x[] 是一个数组 , int n 是该数组元素个数。void 型函数,无return 语句。

for(i=0i<n/2i++) 循环语句,循环到 数组长度的 一半。 第 i 个元素 与 j=n-1-i个元素交换 ,即 第一个元素与最后一个元素交换,第二个元素与倒数第2个元素交换,。。。循环到 数组长度的 一半时,就完成了 反序。反序结果由参数1带回去。

mian() 函数中的 反序函数 调用 语句inv(a,5) 这里的 a 是 main() 里的

局部量 a[5]={3,7,9,11,0}, 该数组元素个数是 5。这个 a, 与全局量 int a=100没有关系。

for(i=0i<5i++) printf("%d",a[i]) 输出反序后的结果。

一、这里的int *p=arr 这么写有两个意思,p前面的*表示p是一个指针变量,后面的=arr表示把此数组的首地址赋给指针变量p。这里的*只起表明变量类型的作用,而不是取地址符。

如果你要分开写,应该写作:int *pp=arr 而不是*p=arr。

二、如果x是数组arr的首地址的指针,也就是arr[0]的地址,那么在x上加9就表示arr[9]的地址。

也就是说j指向arr[9],p指向arr[4].