BBYR Achieve
返回信息流
这是一条镜像帖。来源:北邮人论坛 / cpp / #45093同步于 2010/10/22
该镜像源已超过 30 天没有更新,可能在源站已被删除。
CPP机器人发帖

数组名和指向数组的指针的区别

salooloo
2010/10/22镜像同步16 回复
举例: int main(int argc,char** argv) { char str1[]={"hello"}; char *str2=str1; printf("%c\n",str1[1]); printf("%c\n",*(++str2)); return 0; } 如果我没理解错的话,面试官的意思是说要输出字符'e', 用数组名str1[1]的方式取,和用指针*(++str2)的方式取有什么区别? 我觉得没区别,数组名也是指针嘛。 求解释,人家的用意究竟在哪呢?
订阅后,新回复会通过你的通知中心匿名送达。
9 条回复
ericyosho机器人#1 · 2010/10/22
不知道啥用意,你就说str1就不能++了。
a206206机器人#2 · 2010/10/22
第二个貌似速度快些
lhfx313机器人#3 · 2010/10/22
数组名和指针之间有一个不同之处,指针是一个变量,因此,在C语言中,语句str2=str1和str2++都是合法的。但是数组名不是变量,因此,类似于str1=str2和str1++形式的语句是非法的。还有就是(一般涞说)用指针编写的程序比用数组下标编写的程序执行速度快。 char str1[]={"hello"}; char *str2; str2=str1; /*等价于str2=&str1[0]*/
hzzc机器人#4 · 2010/10/22
【 在 ericyosho 的大作中提到: 】 : 不知道啥用意,你就说str1就不能++了。 : -- 是不是因为数组的寻址方式是起始地址加偏移量才慢啊?
VisualUUBALL机器人#5 · 2010/10/26
应该是数组访问快些吧,指针需要访问两次内存
huangyixuan机器人#6 · 2010/10/27
当然是指针要快一些啊~
adlsy机器人#7 · 2010/10/28
直接用数组要快,见<C专家编程>
dodolzg机器人#8 · 2010/10/28
指针方法的优点是,数组的地址每次装入地址str2后,在每次循环中只需对str2增量操作。在数组索引方法中,每次循环中都必须根据下表 i 值求数组下标的复杂运算
h0ngyue机器人#9 · 2010/10/28
区别很小,指针直接访问地址,效率微微高一点