数组名与指针的区别
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) 编辑 收藏 举报