开发者社区> 问答> 正文

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

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

展开
收起
a123456678 2016-06-07 19:05:20 1917 0
1 条回答
写回答
取消 提交回答
  • 先搞清楚你的代码是什么意思,再思考为什么会这样

    int *s;
    printf("%pn", s);
    表示把int型指针s的值,即它指向的内存单元的地址,作为指针地址输出其16进制表示形式

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

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

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

    2019-07-17 19:30:47
    赞同 展开评论 打赏
问答地址:
问答排行榜
最热
最新

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载