首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >指针地址值的变化

指针地址值的变化
EN

Stack Overflow用户
提问于 2012-04-29 05:24:44
回答 1查看 125关注 0票数 1

我测试了一个小程序,它是写的,问题是为什么指向一个值的指针和指向第一个pointer.But的指针之间有12个字节的差异,如果你查看其他指针地址,每次只有8个字节的差异。我执行这个程序多次,我总是看到这个difference.Can,有人能告诉我这是什么原因吗?提前谢谢。

代码语言:javascript
运行
复制
#include<stdio.h>
#include<stdlib.h>

int main(void)
{
        int val;
        int *ptr;
        int **ptrptr;
        int ***ptrptrptr;
        int ****ptrptrptrptr;
        int *****ptrptrptrptrptr;

        val=10;
        ptr=&val;
        ptrptr=&ptr;
        ptrptrptr=&ptrptr;
        ptrptrptrptr=&ptrptrptr;
        ptrptrptrptrptr=&ptrptrptrptr;

        printf("Value-%d\n",val);
        printf("Value address - %d\n",ptr);
        printf("Pointer address - %d\n",ptrptr);
        printf("Pointer Pointer Address -%d\n",ptrptrptr);
        printf("Pointer Pointer Pointer Address -%d\n",ptrptrptrptr);
        printf("Pointer Pointer Pointer Pointer Address -%d\n",ptrptrptrptrptr);

        return 0;
}

结果是:

代码语言:javascript
运行
复制
Value-10
Value address - -1308521884
Pointer address - -1308521896
Pointer Pointer Address --1308521904
Pointer Pointer Pointer Address --1308521912
Pointer Pointer Pointer Pointer Address --1308521920
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-04-29 05:29:11

这只是你的编译器选择的堆栈布局,f.e。这可能是因为对齐的原因。事情很可能仍然适用于其他布局。

附注,您应该使用%p来打印地址。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10367663

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档