函数与数组

作者在 2009-03-23 16:55:35 发布以下内容
有两个程序:
1)
#include <stdio.h>
void swap1(int x,int y)
  {   int z;
       z = x; x=y; y=z;
   }
main()
   { int a[2] = {1,2};
      swap1(a[0],a[1]);
      printf("a[0]=%d\n",a[0] );
      printf("a[1]=%d\n", a[1]);
   }
2)
#include <stdio.h>
void swap2(int x[] )
  {  int z;
     z=x[0];  x[0]=x[1]; x[1]=z;
     }
main()
   { int a[2] = {1,2};
      swap2(a);
      printf("a[0]=%d\n",a[0] );
      printf("a[1]=%d\n", a[1]);
   }

执行完后,
第一个程序得到:a[0]=1
               a[1]=2
而第二个程序得到a[0]=2
                a[1]=1
void swap1(int x,int y)
  {   int z;
       z = x; x=y; y=z;
   }
//它只对 x,y,z 该地址在内存上的值进行修改;并没有对 a[] 所对应的地址里的值进行修改

void swap2(int x[] )
  {  int z;
     z=x[0];  x[0]=x[1]; x[1]=z;
     }
//它首先将a[]的地址传给x[]也就是说a[]的地址就是x[]的地址;然后对x[]地址(也就是a[]的地址)里的值进行修改

数组的本质是指针,这点要明确
默认分类 | 阅读 1780 次
文章评论,共1条
chenglong196
2009-03-23 22:29
1
这个很重要
游客请输入验证码
浏览27300次
文章分类