作者在 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[]的地址)里的值进行修改
数组的本质是指针,这点要明确
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[]的地址)里的值进行修改
数组的本质是指针,这点要明确