数组名与指针的区别

本文详细阐述了数组与指针之间的三个主要区别:大小不同、数组名不可修改而指针可修改、数组名作为参数传递时的行为变化。并通过示例展示了函数参数中数组与指针的等价使用。

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;

          }

}

转载于:https://www.cnblogs.com/zsh_robot/articles/1314664.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值