社区
C语言
帖子详情
指针疑问
yujian596
2010-04-21 05:18:08
摘抄的,他讲的第二重意义是否正确?why?
声明了一个数组TYPE array[n],则数组名称array就有了两重含义:第一,它代表整个数组,它的类型是TYPE[n];第二 ,它是一个
常量指针
,该指针的类型是TYPE*,该指针指向的类型是TYPE,也就是数组单元的类型,该指针指向的内存区就是数组第0号单元,该指针自己占有单独的内存区,
注意它和数组第0号单元占据的内存区是不同的。该指针的值是不能修改的,即类似array++的表达式是错误的
。
...全文
197
17
打赏
收藏
指针疑问
摘抄的,他讲的第二重意义是否正确?why? 声明了一个数组TYPE array[n],则数组名称array就有了两重含义:第一,它代表整个数组,它的类型是TYPE[n];第二 ,它是一个常量指针,该指针的类型是TYPE*,该指针指向的类型是TYPE,也就是数组单元的类型,该指针指向的内存区就是数组第0号单元,该指针自己占有单独的内存区,注意它和数组第0号单元占据的内存区是不同的。该指针的值是不能修改的,即类似array++的表达式是错误的。
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
17 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
Sunday
2010-04-22
打赏
举报
回复
http://download.csdn.net/source/2270813
希望对你有帮助,写得很详细,全是介绍指针的
Sunday
2010-04-22
打赏
举报
回复
上面的应该是正确的,数组名就是一个常量,它代表一个地址常量,指向数组的起始地址
注意,这个数组名被存储在存储器的某个位置,是一个指针常量,当你取a[1]的值时,编译器是这样做的,
先找到a[0]的地址,这个地址与a是相通的,然后*(a+1);就是这样;
在这再给你补充点知识;希望对你有点帮助,呵呵
行指针与列指针
比如:数组a[3][3]
行指针 a &a[0];
列指针 a[0] *(a+0);
Int b[4];//b是列地址
int (*p)[3]; //定义一个行指针,此行指针指向一个有三个元素的int类型数组
关于行指针和列指针的两句话:行指针取*变成列指针,列指针再取*变成数组元素;
数组元素取地址变成列指针,列指针取地址变成行指
赵4老师
2010-04-22
打赏
举报
回复
VC调试时按Alt+8,TC或BC用TD调试,打开汇编窗口看每句C对应的汇编不就啥都明白了吗。
想要从本质上理解C指针,必须学习汇编以及C和汇编的对应关系。
从汇编的角度理解和学习C语言的指针,原本看似复杂的东西就会变得非常简单!
yujian596
2010-04-22
打赏
举报
回复
谢5楼和9楼。顶上,希望有更多的高手讲解下。
看了5楼的文章,有一定帮助。但是,我觉得你的论证方式有问题,你要论证数组名不是指针常量,你却从数组名不是指针,也不是常量来论证。指针常量,应该是指针的常量,主体是常量,指针只是修饰的。还有“c和d是自动数组,首地址在编译期是不可知的,因为这样的对象在编译期还不存在”,我有疑问,编译期经过此函数时实际分配了内存的,只是函数结束后释放了。
wade_2003
2010-04-22
打赏
举报
回复
不可以array++ 吧
www_adintr_com
2010-04-22
打赏
举报
回复
++的含义除了返回 array + 1 外还要修改 array 本身,而常量不能修改,所以不能 ++
飞天御剑流
2010-04-22
打赏
举报
回复
[Quote=引用 10 楼 yujian596 的回复:]
谢5楼和9楼。顶上,希望有更多的高手讲解下。
看了5楼的文章,有一定帮助。但是,我觉得你的论证方式有问题,你要论证数组名不是指针常量,你却从数组名不是指针,也不是常量来论证。指针常量,应该是指针的常量,主体是常量,指针只是修饰的。还有“c和d是自动数组,首地址在编译期是不可知的,因为这样的对象在编译期还不存在”,我有疑问,编译期经过此函数时实际分配了内存的,只是函数结束后释放了。
[/Quote]
你现在一时理解不了是很正常的,原因嘛,一是时间问题;二是受其它书籍的毒害。慢慢来吧,两三年后希望你再回来好好读一下这一章,那时候再重新思考以上这段话。
yujian596
2010-04-22
打赏
举报
回复
[Quote=引用 13 楼 zhuyingqingfen 的回复:]
http://download.csdn.net/source/2270813
希望对你有帮助,写得很详细,全是介绍指针的
[/Quote]
你上传的就是我现在看的。。。我也认为他是个指针常量。。非原文说的常量指针。他指向的数组的首地址是不可改变的,即指针的值是不能修改的,但是对于原文说的类似array++的表达式是错误的,我认为array++的表达式不是错误的,因为只从这个表达式看来,array数组名完全可以当做数组的首地址使用,array++指向数组的下一个元素地址。
ypb362148418
2010-04-21
打赏
举报
回复
那个指针不是常量指针,指针明显可以修改他指向的值,但是的确是有独立的内存空间,数组名不是指针,不过可以转化
飞天御剑流
2010-04-21
打赏
举报
回复
[Quote=引用 6 楼 cudyiron 的回复:]
引用 5 楼 supermegaboy 的回复:
引用楼主 yujian596 的回复:
摘抄的,他讲的第二重意义是否正确?why?
声明了一个数组TYPE array[n],则数组名称array就有了两重含义:第一,它代表整个数组,它的类型是TYPE[n];第二 ,它是一个常量指针,该指针的类型是TYPE*,该指针指向的类型是TYPE,也就是数组单元的类型,该指针指向的内存区就是数……
[/Quote]
http://blog.csdn.net/supermegaboy/archive/2009/11/23/4855018.aspx
sfd1234
2010-04-21
打赏
举报
回复
[Quote=引用 5 楼 supermegaboy 的回复:]
引用楼主 yujian596 的回复:
摘抄的,他讲的第二重意义是否正确?why?
声明了一个数组TYPE array[n],则数组名称array就有了两重含义:第一,它代表整个数组,它的类型是TYPE[n];第二 ,它是一个常量指针,该指针的类型是TYPE*,该指针指向的类型是TYPE,也就是数组单元的类型,该指针指向的内存区就是数组第0号单元,该指针自己占有单独的内存区,注意它和数组第……
[/Quote]
绝对的概念错误!
相似不代表相同!
很多老师可能为了怕大家乱,于是就说是相同了!这样不好!
ShaoTch
2010-04-21
打赏
举报
回复
[Quote=引用 5 楼 supermegaboy 的回复:]
引用楼主 yujian596 的回复:
摘抄的,他讲的第二重意义是否正确?why?
声明了一个数组TYPE array[n],则数组名称array就有了两重含义:第一,它代表整个数组,它的类型是TYPE[n];第二 ,它是一个常量指针,该指针的类型是TYPE*,该指针指向的类型是TYPE,也就是数组单元的类型,该指针指向的内存区就是数组第0号单元,该指针自己占有单独的内存区,注意它和数组……
[/Quote]
那请问这两个概念应该要怎么表述呢?
我只知道数组名和指向数组指针是不一样的,数组名指向数组第一单元,其值只读,且数组名是存在于进行内存的数据段内,楼主讲义里描述的和我说的是一回事吗?
飞天御剑流
2010-04-21
打赏
举报
回复
[Quote=引用楼主 yujian596 的回复:]
摘抄的,他讲的第二重意义是否正确?why?
声明了一个数组TYPE array[n],则数组名称array就有了两重含义:第一,它代表整个数组,它的类型是TYPE[n];第二 ,它是一个常量指针,该指针的类型是TYPE*,该指针指向的类型是TYPE,也就是数组单元的类型,该指针指向的内存区就是数组第0号单元,该指针自己占有单独的内存区,注意它和数组第0号单元占据的内存区是不同的。该指针的值是……
[/Quote]
错在这两句:
它是一个常量指针
该指针自己占有单独的内存区
彻底的概念性错误。
r11222
2010-04-21
打赏
举报
回复
有什么问题呢?事实就是这样
zwicker
2010-04-21
打赏
举报
回复
array++貌似是可以的啊 指向数组的下个元素的内存区
某某9
2010-04-21
打赏
举报
回复
我感觉正确~
yujian596
2010-04-21
打赏
举报
回复
自己顶个
C语言
指针
详解--让你不再害怕
指针
C语言
指针
详解--让你不再害怕
指针
,主要解答了C语言初学者对使用
指针
的
疑问
。
使用类的对象还是
指针
使用类的对象还是
指针
,总结了下,给有
疑问
的朋友做个参考
2小时精通C++智能
指针
本课程讲解C++11标准库中的智能
指针
。对于C/C++程序员来说,
指针
是天堂,也是地狱。
指针
用得好程序运行效率倍增,用得不好问题层出不穷。智能
指针
可以解决普通
指针
存在的悬垂
指针
、野
指针
、资源泄露等问题本教程的主要的演示平台为Qt 4.11和g++ 7.4。学员也可以使用Visual Studio 2017。教程中从最简单的例子入手,覆盖智能
指针
的常用技术点,并穿插实例程序。本篇讲解的技术点包括:共享
指针
、弱
指针
、唯一
指针
、自动
指针
等。本课程中涉及的所有软件和示例源码,均提供免费下载。
C++
指针
详解,个人
指针
总结
C++
指针
详解,个人学习
指针
总结,
指针
学习中的困惑和
疑问
,分享交流。
深入
指针
理解
比较深入的介绍
指针
,对
指针
的
指针
的那块介绍比较好,当初的一些关于
指针
的
疑问
在这篇文章中得到解决。推荐
C语言
69,371
社区成员
243,080
社区内容
发帖
与我相关
我的任务
C语言
C语言相关问题讨论
复制链接
扫一扫
分享
社区描述
C语言相关问题讨论
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章