数组名与指针的区别

1)        大小不同:对数组名求sizeof,结果是数组的占用的内存字节数(维数×每个元素大小)。对指针求sizeof,结果在32位机上是4

2)        数组名是只读指针,其值不可以被修改(不可以作为lvalue)。指针的值可以被修改(通过++--来浏览数组元素)。

3)        数组名被当作函数参数传递时,会被转化为指针。所以函数参数无论是数组形式,还是指针形式,是完全等价的。当数组名被当作函数参数传入后,在函数内求sizeof的结果不是数组占用的内存字节数,而是4

下面两个函数定义完全等价,但func1更好,因为它使调用者很明确地看到需要传入的是一个数组。

void func1(int a[], int size)

{

          for (int i = 0; i < size; i++)

          {

               a[i] = i*i -i;

          }

}

 

void func2(int* a, int size)

{

          for (int i = 0; i < size; i++)

          {

               a[i] = i*i -i;

          }

}

posted on 2008-10-19 20:54  spacer_robot  阅读(385)  评论(1编辑  收藏  举报

导航