先搞清楚你的代码是什么意思,再思考为什么会这样
int *s;
printf("%pn", s);
表示把int型指针s的值,即它指向的内存单元的地址,作为指针地址输出其16进制表示形式
由于没给指针s赋值,所以它的输出是不确定的,至于例1中s和t为啥一样,只能说是个巧合
printf("%dn", &s);
表示把s这个变量的地址,也就是s自己所在的内存单元的地址(注意不是指针s的值,也不是s所指向的内存单元的值),当做整型数字打印出来
指针自身占4个字节,相邻声明的两个变量的地址之差就是第一个变量的长度4
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。