搜索
编程论坛
→
开发语言
→
『 C语言论坛 』
→ c语言局部变量分配问题,这样通过指针访问存在问题吗
标题:
c语言局部变量分配问题,这样通过指针访问存在问题吗
取消只看楼主
Tsing_Man
等 级:
新手上路
帖 子:7
专家分:8
注 册:2018-9-1
结帖率:
0
楼主
已结贴
√
问题点数:20 回复次数:3
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
等 级:
新手上路
帖 子:7
专家分:8
注 册:2018-9-1
第
2
楼
得分:0
希望大家能帮忙看看
2018-09-01 22:24
Tsing_Man
等 级:
新手上路
帖 子:7
专家分:8
注 册:2018-9-1
第
3
楼
得分:0
以下是引用
吹水佬
在2018-9-1 22:48:13的发言:
用 p 指向 c 就可以通过 p 肯定可以得到 a 或 b ???
谢谢您的回复,因为是局部变量,存储在栈区,地址都是连续的,从后面打印可以看出来,我主要疑惑,为什么把那句注释打开,就可以打印出正确的值了。
2018-09-02 09:12
Tsing_Man
等 级:
新手上路
帖 子:7
专家分:8
注 册:2018-9-1
第
4
楼
得分:0
以下是引用
吹水佬
在2018-9-2 09:32:04的发言:
栈区地址也不一定是连续,有兴趣可以看看编译后的代码。
或者说这种做法也属于“未定义行为”
谢谢您的关注,那为什么 // printf("%p %p %p \n",&a,&b,&c);这句代码放开,就总能得到正确答案了,&a仅仅获得a的地址,打不打印都是存在的啊。
2018-09-02 09:49
4
1/1页
1
参与讨论请移步原网站贴子:
https://bbs.bccn.net/thread-489577-1-1.html
关于我们
|
广告合作
|
编程中国
|
清除Cookies
|
TOP
|
手机版
编程中国
版权所有,并保留所有权利。
Powered by
Discuz
, Processed in 0.021821 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved