| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1991 人关注过本帖
标题:c语言局部变量分配问题,这样通过指针访问存在问题吗
只看楼主 加入收藏
Tsing_Man
Rank: 1
等 级:新手上路
帖 子:7
专家分:8
注 册:2018-9-1
结帖率:0
收藏
已结贴  问题点数:20 回复次数:10 
c语言局部变量分配问题,这样通过指针访问存在问题吗
图片附件: 游客没有浏览图片的权限,请 登录注册

图片附件: 游客没有浏览图片的权限,请 登录注册

int main()
{
    int a=36,b=63,c=656,i=0;
    int *p=&c;
//    printf("%p  %p  %p \n",&a,&b,&c);
    printf("%d %d %d\n",p[0],p[1],p[2]);
    return 0;
}
代码如上,附件贴了运行结果,这样访问存在问题吗?为什么注释代码放开后,运行就正常了,仅仅打印一次地址,有什么不同吗
搜索更多相关主题的帖子: c语言 分配 访问 存在 int 
2018-09-01 22:06
Tsing_Man
Rank: 1
等 级:新手上路
帖 子:7
专家分:8
注 册:2018-9-1
收藏
得分:0 
希望大家能帮忙看看
2018-09-01 22:24
吹水佬
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:451
帖 子:10607
专家分:43182
注 册:2014-5-20
收藏
得分:7 
用 p 指向 c 就可以通过 p 肯定可以得到 a 或 b ???
2018-09-01 22:48
Tsing_Man
Rank: 1
等 级:新手上路
帖 子:7
专家分:8
注 册:2018-9-1
收藏
得分:0 
以下是引用吹水佬在2018-9-1 22:48:13的发言:

用 p 指向 c 就可以通过 p 肯定可以得到 a 或 b ???

谢谢您的回复,因为是局部变量,存储在栈区,地址都是连续的,从后面打印可以看出来,我主要疑惑,为什么把那句注释打开,就可以打印出正确的值了。
2018-09-02 09:12
吹水佬
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:451
帖 子:10607
专家分:43182
注 册:2014-5-20
收藏
得分:0 
以下是引用Tsing_Man在2018-9-2 09:12:33的发言:


谢谢您的回复,因为是局部变量,存储在栈区,地址都是连续的,从后面打印可以看出来,我主要疑惑,为什么把那句注释打开,就可以打印出正确的值了。

栈区地址也不一定是连续,有兴趣可以看看编译后的代码。
或者说这种做法也属于“未定义行为”
2018-09-02 09:32
Tsing_Man
Rank: 1
等 级:新手上路
帖 子:7
专家分:8
注 册:2018-9-1
收藏
得分:0 
以下是引用吹水佬在2018-9-2 09:32:04的发言:


栈区地址也不一定是连续,有兴趣可以看看编译后的代码。
或者说这种做法也属于“未定义行为”

谢谢您的关注,那为什么 //    printf("%p  %p  %p \n",&a,&b,&c);这句代码放开,就总能得到正确答案了,&a仅仅获得a的地址,打不打印都是存在的啊。
2018-09-02 09:49
吹水佬
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:451
帖 子:10607
专家分:43182
注 册:2014-5-20
收藏
得分:0 
如果认为是未定义行为就没必要讨论,否则可以继续执着探讨一下
用这种方法去获取a或b的值肯定是错误的,想通过指针来获取a或b就要象获取c的一样声明一个指针并定义地址属性
2018-09-02 11:18
forever74
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:CC
等 级:版主
威 望:58
帖 子:1688
专家分:4262
注 册:2007-12-27
收藏
得分:7 
要正确建立对于“钻研”的观念。
楼主你所认为的“正确”,并没有规则在保证它,所以不要把它和真理扯在一起。
就算你长久地观察你的某位室友,每次穿鞋总是先穿左脚的,你也没法保证这件事和规则或者真理有什么关系。

对宇宙最严谨的描述应该就是宇宙其实是不严谨的
2018-09-02 12:52
forever74
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:CC
等 级:版主
威 望:58
帖 子:1688
专家分:4262
注 册:2007-12-27
收藏
得分:0 
你观察了一些变量的地址,这些地址貌似有规律。
你不观察它,它其实是在一定范围内随机的。
这个叫做量子效应。

对宇宙最严谨的描述应该就是宇宙其实是不严谨的
2018-09-02 12:57
forever74
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:CC
等 级:版主
威 望:58
帖 子:1688
专家分:4262
注 册:2007-12-27
收藏
得分:0 
话说我一直怀疑高能物理的那些所谓实验数据都是宇宙在我们这部分的编译器实现,因而并不是宇宙物理白皮书的一部分。

对宇宙最严谨的描述应该就是宇宙其实是不严谨的
2018-09-02 13:02
快速回复:c语言局部变量分配问题,这样通过指针访问存在问题吗
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.042498 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved