社区
C语言
帖子详情
数组名与指针问题(数组名本身是个指针变量,还是就是一个值?)
Roy_Smiling
2011-02-28 05:55:25
有书上说数组名就是指针,那么假如在一个函数中定义了一个数组:int a[10];那么是说a 是一个指针变量,指向的是有10个int单元的首地址,还是a 的值就是这10个单元的首地址啊?如果是后者那么a 本身就不是一个变量了,就是一个值了么?
...全文
297
10
打赏
收藏
数组名与指针问题(数组名本身是个指针变量,还是就是一个值?)
有书上说数组名就是指针,那么假如在一个函数中定义了一个数组:int a[10];那么是说a 是一个指针变量,指向的是有10个int单元的首地址,还是a 的值就是这10个单元的首地址啊?如果是后者那么a 本身就不是一个变量了,就是一个值了么?
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用AI写文章
10 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
FrankHB1989
2011-02-28
打赏
举报
回复
嘛……话说回来,只是在C语言中不区分“数组名”和“数组”倒也没什么大碍。
“数组名转换为指针”这种说法应该是一种习惯,不过其实并不很常见。
(ISO C99中,converting array name to pointer这类描述只是出现在一个脚注中,并不是被良好定义的说法。)
PS.ISO C99在基础概念上不太严格,像entity等没有定义却直接使用了,不知道是不是JTC1/SC22/WG14认为这些概念是“不言自明”的关系。用ISO C++的兼容概念来补充的话,值、类型和对象都是entity,而name指标识符的一种用法,和entity相对。
FrankHB1989
2011-02-28
打赏
举报
回复
数组名是数组名,数组是数组,指针是指针,三回事。
简单地说,数组名表示的数组除了少数左值上下文(如作为&和sizeof的操作数)外,都会隐式转换为指向这个数组首个元素的指针,这个指针是常量。
Roy_Smiling
2011-02-28
打赏
举报
回复
[Quote=引用 7 楼 jqctop1 的回复:]
数组名是一个常量,不是变量,它的值是数组第一个元素的地址
[/Quote]
那是不是说数组名和函数名是一样的,是一个常量,它的值是相应的第一个元素的地址?
有点笨
2011-02-28
打赏
举报
回复
数组名是一个常量,不是变量,它的值是数组第一个元素的地址
liutengfeigo
2011-02-28
打赏
举报
回复
我想问的是数组名是不是个指针变量,还是它本身就是一个值,。就是它是不能改变的变量还是常量。
你可以理解成一个常指针.
gladstonejay
2011-02-28
打赏
举报
回复
数组名不可以说是指针变量
只是退化为指针
它本身可以改变
跟正常的指针一样、 当然你用CONST修饰就是另外一回事了、、
Roy_Smiling
2011-02-28
打赏
举报
回复
[Quote=引用 1 楼 johnxme126 的回复:]
都是,指针变量的值就是地址。所以你的两种说法是一样的
lz可以去看下指针的定义。
[/Quote]
我想问的是数组名是不是个指针变量,还是它本身就是一个值,。就是它是不能改变的变量还是常量。
pengzhixi
2011-02-28
打赏
举报
回复
http://blog.csdn.net/supermegaboy/archive/2009/11/23/4855036.aspx
个人还是觉得这位的写得非常好
昵称很不好取
2011-02-28
打赏
举报
回复
数组名和指针还是两回事,当做函数参数的时候数组名会退化为指针
参考下面这篇文章:
http://windmill.javaeye.com/blog/371192
Johnxme126
2011-02-28
打赏
举报
回复
都是,指针变量的值就是地址。所以你的两种说法是一样的
lz可以去看下指针的定义。
C语言
70,024
社区成员
243,263
社区内容
发帖
与我相关
我的任务
C语言
C语言相关问题讨论
复制链接
扫一扫
分享
社区描述
C语言相关问题讨论
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章