奇怪的C指针试验,这说明了什么?

发布于 2022-08-31 20:16:56 字数 284 浏览 16 评论 0

居然会因为我的输出不同,指针指向不同的地方,这是为什么呢?
图片描述

图片描述

PS:突然想到 难道不是C的问题 而是编译器的问题?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

萝莉病 2022-09-07 20:16:56

先搞清楚你的代码是什么意思,再思考为什么会这样

int *s;
printf("%p\n", s);

表示把int型指针s,即它指向的内存单元的地址,作为指针地址输出其16进制表示形式

由于没给指针s赋值,所以它的输出是不确定的,至于例1中s和t为啥一样,只能说是个巧合

printf("%d\n", &s);

表示把s这个变量的地址,也就是s自己所在的内存单元的地址(注意不是指针s的值,也不是s所指向的内存单元的值),当做整型数字打印出来

指针自身占4个字节,相邻声明的两个变量的地址之差就是第一个变量的长度4

友谊不毕业 2022-09-07 20:16:56

什么意思?你本来就没有给指针变量赋值,它的值当然是不确定的。

辞别 2022-09-07 20:16:56

C语言中没有定义一个未赋值的指针应该是什么值,所以这的确是取决于编译器的实现。

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文