发新帖我要提问
12
返回列表
打印

指针和数组的不同点

[复制链接]
楼主: abin0415
手机看帖
扫描二维码
随时随地手机跟帖
21
常来21IC| | 2011-4-12 00:08 | 只看该作者 回帖奖励 |倒序浏览
最大的却别:指针灵活,它指向的内存地址可变;数组名死板,指向的地址不能由程序员随意更改。

用数组名来传递一个内存地址时,数组名看起来和指针一摸一样;程序跑起来以后,程序员可随意修改指针指向内存地址,但不能随意修改数组名指向的内存地址。

实际应用中,不必纠结与他们之间的区别,代码能满足需求(功能、性能、可读性、可移植性)即可!

使用特权

评论回复
22
clingos| | 2011-4-12 08:56 | 只看该作者
指针和数组名,我觉得LZ能问这样的问题,说明确实是用心学C了,当然这个对于平时的编程来说无大碍,
但是个人觉得如果深入了解会对C有更深一步的认识。
1、从左值和右值的概念来说,指针一般指的地址变量,数组名是一个地址常量
     对于左值和右值的数据间接访问,在语言的语义程面是一样的,但对于有的MCU
     编译的汇编的寻址方式可能不同。
2、在大部分情况指针和数组名可以互换,比如函数参数传递,不管是指针还是数组本质传的是一个地址。
3、但在有些情况下指针和数组名是有区别的,比如在sizeof(x)这样的表达式时,如果对于指针得到的是
     这个变量的字节数,而对于数组得到的是整个数组的长度。

以上三点是我个人的理解,如有错误,请各位不吝指教!

使用特权

评论回复
23
neseae| | 2011-4-12 09:57 | 只看该作者
学习一下

使用特权

评论回复
24
mingmwcom| | 2011-4-12 10:13 | 只看该作者
我来学习了

使用特权

评论回复
25
abin0415|  楼主 | 2011-4-12 12:53 | 只看该作者
受教了,只从发了这个帖子,我才学会了如何发帖。:D

使用特权

评论回复
26
老鱼探戈| | 2011-4-12 13:22 | 只看该作者
围观20L

使用特权

评论回复
27
老鱼探戈| | 2011-4-12 13:26 | 只看该作者
请教高手,如何跳转?

在一个main( )主函数中,C程序如何跳转(不是调用)到 f1()函数?


、、
刘前辈 发表于 2011-4-11 17:18


用goto语句吧,不过不建议这样用
出个标志位再进入f1() 好些

使用特权

评论回复
28
yalingcat| | 2011-4-12 17:20 | 只看该作者
慢慢体会

使用特权

评论回复
29
richardnee| | 2011-4-17 23:44 | 只看该作者
把C和汇编联系起来,融会贯通了,一切也就ok了。可以把C编译成汇编,对比下

使用特权

评论回复
30
sdpz| | 2011-4-18 15:26 | 只看该作者
用goto语句吧,不过不建议这样用
出个标志位再进入f1() 好些
老鱼探戈 发表于 2011-4-12 13:26



就算建议了也用不了哦。goto语句只能在函数作用域内使用。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则