社区
C++ 语言
帖子详情
指针 地址 数组 混了。。。
s446721902
2010-02-02 07:20:39
int a[5]={1,2,3,4,5};
int t = *(*(&a+1));
t出来的应该是什么
...全文
345
47
打赏
收藏
指针 地址 数组 混了。。。
int a[5]={1,2,3,4,5}; int t = *(*(&a+1)); t出来的应该是什么
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
47 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
y7501272
2010-02-03
打赏
举报
回复
[Quote=引用 32 楼 s446721902 的回复:]
引用 31 楼 y7501272 的回复:
t是不确定数 不知道楼主想得到什么结果?
我只想知道为什么
[/Quote]
a代表的是数组首地址 它的值是a[0]的地址 它是一维的
&a叫什么东东我也不晓得 它的值还是a[0]的地址 但是它是二维的
*a就是a[0]的值了 **&a也是a[0]的值
int a[5]={1,2,3,4,5};
int t = *(*(&a+1));
a是一维的 +1 就是+sizeof(int)
&a是二维的 +1 就是+sizeof(a)
所以 (&a+1) 就是一个二维的指针 他的值就是a[5]的地址
因为是二维的所以就要用两个*
*运算符的是右结合的 所以写成这样**(&a+1)是一样的
y7501272
2010-02-03
打赏
举报
回复
[Quote=引用 31 楼 y7501272 的回复:]
t是不确定数 不知道楼主想得到什么结果?
[/Quote]
a代表的是数组首地址 它的值是a[0]的地址 它是一维的
&a叫什么东东我也不晓得 它的值还是a[0]的地址 但是它是二维的
*a就是a[0]的值了 **&a也是a[0]的值
int a[5]={1,2,3,4,5};
int t = *(*(&a+1));
a是一维的 +1 就是+sizeof(int)
&a是二维的 +1 就是+sizeof(a)
所以 (&a+1) 就是一个二维的指针 他的值就是a[5]的地址
因为是二维的所以就要用两个*
*运算符的是右结合的 所以写成这样**(&a+1)是一样的
vincent_1011
2010-02-03
打赏
举报
回复
老兄,你肯定漏掉括号了。
&a和&a+1是相差20个字节的,我刚刚调过了
赵4老师
2010-02-03
打赏
举报
回复
想要从本质上理解C指针,必须学习汇编以及C和汇编的对应关系。
从汇编的角度理解和学习C语言的指针,原本看似复杂的东西就会变得非常简单!
赵4老师
2010-02-03
打赏
举报
回复
VC6调试时按Alt+8,TC或BC用TD调试,打开汇编窗口看每句C对应的汇编。
s446721902
2010-02-03
打赏
举报
回复
[Quote=引用 31 楼 y7501272 的回复:]
t是不确定数 不知道楼主想得到什么结果?
[/Quote]
我只想知道为什么
y7501272
2010-02-03
打赏
举报
回复
t是不确定数 不知道楼主想得到什么结果?
niimp2
2010-02-03
打赏
举报
回复
t值未知.
s446721902
2010-02-03
打赏
举报
回复
[Quote=引用 28 楼 haha_ 的回复:]
看都看不懂
自己折磨自己
[/Quote]
以前没这种钻的感觉,所以学的不好,现在出来工作了2个月,感觉知识太缺了,所以有时候要钻牛角了弄懂细节了
haha_
2010-02-03
打赏
举报
回复
看都看不懂
自己折磨自己
songsu
2010-02-03
打赏
举报
回复
复杂鸟。。。
s446721902
2010-02-03
打赏
举报
回复
[Quote=引用 25 楼 flyerwing 的回复:]
引用 23 楼 assassin5616 的回复:
a[0]地址+1指针应该前进四位才对吧,为什么你只前进了一位?你的a是不是char类型,而不是int类型?
引用 19 楼 s446721902 的回复:
引用 18 楼 vincent_1011 的回复:
引用 16 楼 s446721902 的回复:
&a+1出来的是a[0]地址+1。。
老兄,补补功课。
嗯,但是我这边调出来是
a 0x0012ff68
&a 0x0012ff68
&a+1 0x0012ff69
&a[0] 0x0012ff68
这是为什么
引用 2 楼 lizunjie 的回复:
t出来的时5后面的东西
相当于(*(a[1]))
完了,不认识了
[/Quote]
我要崩溃了
flyerwing
2010-02-03
打赏
举报
回复
[Quote=引用 23 楼 assassin5616 的回复:]
a[0]地址+1指针应该前进四位才对吧,为什么你只前进了一位?你的a是不是char类型,而不是int类型?
引用 19 楼 s446721902 的回复:
引用 18 楼 vincent_1011 的回复:
引用 16 楼 s446721902 的回复:
&a+1出来的是a[0]地址+1。。
老兄,补补功课。
嗯,但是我这边调出来是
a 0x0012ff68
&a 0x0012ff68
&a+1 0x0012ff69
&a[0] 0x0012ff68
这是为什么
[/Quote]
[Quote=引用 2 楼 lizunjie 的回复:]
t出来的时5后面的东西
[/Quote]
相当于(*(a[1]))
完了,不认识了
assassin5616
2010-02-03
打赏
举报
回复
得,我又武断了,居然平台不同,编译器不同,结果还不一样。
[Quote=引用 22 楼 assassin5616 的回复:]
本来就是这样,&a + 1就是a[0]的地址 +1啊。&a 就是a,这个是乌龟的屁股——规定,没什么好去探究为什么的,就好像引用的引用和引用是同一个东西一样,编译器就这么实现的。
引用 18 楼 vincent_1011 的回复:
引用 16 楼 s446721902 的回复:
&a+1出来的是a[0]地址+1。。
老兄,补补功课。
[/Quote]
assassin5616
2010-02-03
打赏
举报
回复
a[0]地址+1指针应该前进四位才对吧,为什么你只前进了一位?你的a是不是char类型,而不是int类型?
[Quote=引用 19 楼 s446721902 的回复:]
引用 18 楼 vincent_1011 的回复:
引用 16 楼 s446721902 的回复:
&a+1出来的是a[0]地址+1。。
老兄,补补功课。
嗯,但是我这边调出来是
a 0x0012ff68
&a 0x0012ff68
&a+1 0x0012ff69
&a[0] 0x0012ff68
这是为什么
[/Quote]
assassin5616
2010-02-03
打赏
举报
回复
本来就是这样,&a + 1就是a[0]的地址 +1啊。&a 就是a,这个是乌龟的屁股——规定,没什么好去探究为什么的,就好像引用的引用和引用是同一个东西一样,编译器就这么实现的。
[Quote=引用 18 楼 vincent_1011 的回复:]
引用 16 楼 s446721902 的回复:
&a+1出来的是a[0]地址+1。。
老兄,补补功课。
[/Quote]
s446721902
2010-02-03
打赏
举报
回复
[Quote=引用 20 楼 cismylife 的回复:]
看到&a就感觉不对劲了
[/Quote]
帮我解惑,呵呵
cismylife
2010-02-03
打赏
举报
回复
看到&a就感觉不对劲了
s446721902
2010-02-03
打赏
举报
回复
[Quote=引用 18 楼 vincent_1011 的回复:]
引用 16 楼 s446721902 的回复:
&a+1出来的是a[0]地址+1。。
老兄,补补功课。
[/Quote]
嗯,但是我这边调出来是
a 0x0012ff68
&a 0x0012ff68
&a+1 0x0012ff69
&a[0] 0x0012ff68
这是为什么
s446721902
2010-02-03
打赏
举报
回复
[Quote=引用 44 楼 looklzg1108 的回复:]
真正实际开发的时候,是不会出现这样的代码的。
[/Quote]
嗯,一般是不会弄到这个的
加载更多回复(27)
C/C++ 避免
数组
越界的方法
主要介绍了C/C++ 避免
数组
越界的方法,文中讲解非常细致,代码帮助大家更好的理解和学习,感兴趣的朋友可以了解下
php
数组
指针
操作详解
数组
指针
的操作: 移动
数组
指针
的操作: Next() 向下 同时会获得当前元素的值。 Prev() 向上同时会获得当前元素的值。 End() 移动到最后一个元素单元 获得最后一个元素的值 Reset() 移动到第一个单元 获得第一个元素...
Linux C编程进阶之
指针
与
数组
解析
数组
与
指针
是C语言的难点和重点,如果不懂
指针
和
数组
,就谈不上会C语言,更谈不上精通,本教程凝结了多年讲授C语言编程的心血,总结出了容易理解、简单使用的
指针
数组
分析技巧,通过该技巧分析出
数组
名、多维
数组
、...
C语言中二维
数组
指针
的简要说明
C语言中,
指针
是一个复杂但又灵活多变的知识点,我们知道,在一维
数组
中,对于一个
数组
a[],*a,a,&a,都表示a的首
地址
,但如果与二维
数组
混
合使用,就显得更为复杂了。例如对于一个二维
数组
a[2][4]={{1,2.3},{4...
详解C语言-二级
指针
三种内存模型
这种模型为二级
指针
的第一种内存模型,在理解的时候应该这样理解:定义了一个
指针
数组
(char * []),
数组
的每个元素都是一个
地址
。 在使用的时候,若要使用中间量操作元素,那么此时中间量应该定义为 char *tmp = ...
C++ 语言
64,282
社区成员
250,470
社区内容
发帖
与我相关
我的任务
C++ 语言
C++ 语言相关问题讨论,技术干货分享,前沿动态等
复制链接
扫一扫
分享
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
请不要发布与C++技术无关的贴子
请不要发布与技术无关的招聘、广告的帖子
请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下
试试用AI创作助手写篇文章吧
+ 用AI写文章