数组名与指针问题(数组名本身是个指针变量,还是就是一个值?)

Roy_Smiling 2011-02-28 05:55:25
有书上说数组名就是指针,那么假如在一个函数中定义了一个数组:int a[10];那么是说a 是一个指针变量,指向的是有10个int单元的首地址,还是a 的值就是这10个单元的首地址啊?如果是后者那么a 本身就不是一个变量了,就是一个值了么?
...全文
249 10 打赏 收藏 转发到动态 举报
写回复
用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
  • 打赏
  • 举报
回复
昵称很不好取 2011-02-28
  • 打赏
  • 举报
回复
数组名和指针还是两回事,当做函数参数的时候数组名会退化为指针
参考下面这篇文章:
http://windmill.javaeye.com/blog/371192
Johnxme126 2011-02-28
  • 打赏
  • 举报
回复
都是,指针变量的值就是地址。所以你的两种说法是一样的
lz可以去看下指针的定义。

69,369

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧