社区
C语言
帖子详情
数组名与指针问题(数组名本身是个指针变量,还是就是一个值?)
Roy_Smiling
2011-02-28 05:55:25
有书上说数组名就是指针,那么假如在一个函数中定义了一个数组:int a[10];那么是说a 是一个指针变量,指向的是有10个int单元的首地址,还是a 的值就是这10个单元的首地址啊?如果是后者那么a 本身就不是一个变量了,就是一个值了么?
...全文
342
10
打赏
收藏
数组名与指针问题(数组名本身是个指针变量,还是就是一个值?)
有书上说数组名就是指针,那么假如在一个函数中定义了一个数组:int a[10];那么是说a 是一个指针变量,指向的是有10个int单元的首地址,还是a 的值就是这10个单元的首地址啊?如果是后者那么a 本身就不是一个变量了,就是一个值了么?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用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/C++
数组
名
与
指针
区别深入探索
本文通过具体示例解析了C/C++中
数组
名
与
指针
的区别,揭示了
数组
名
并非
指针
,而是具有特定内涵的数据结构。文章还澄清了
数组
名
在不同上下文中表现得像
指针
的原因。
数组
名
和
指针
的区别
本文详细探讨了
数组
名
与
指针
的区别,通过汇编代码对比实验,证明
数组
名
并非
指针
,而是符号,没有自己的存储空间。解释了
指针
与
数组
名
在表达式运算中的相似性及本质上的不同。
C语言 | 改变
指针
变量
的
值
本文介绍了如何在C语言中改变
指针
变量
的
值
,通过
一个
编程实例展示了
指针
变量
如何指向不同内存位置,同时强调了
数组
名
作为常量地址不可更改的特性,并给出了编译运行结果。
数组
名
到底是不是
指针
? ---
数组
名
与
指针
的区别
本文探讨了
数组
名
与
指针
看似相似实则不同的概念,通过证明
数组
名
不能进行算术运算、内存分配差异,以及sizeof操作的解释来确认
数组
名
的本质。重点讲述了
数组
和
指针
的区别,如类型、可变性、用途,并揭示
数组
名
在实际场景中的隐形转换现象。
C语言
70,038
社区成员
243,247
社区内容
发帖
与我相关
我的任务
C语言
C语言相关问题讨论
复制链接
扫一扫
分享
社区描述
C语言相关问题讨论
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章