| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 493 人关注过本帖
标题:关于栈中变量分配的问题
取消只看楼主 加入收藏
hanwang3
Rank: 1
等 级:新手上路
帖 子:24
专家分:7
注 册:2015-8-24
结帖率:60%
收藏
已结贴  问题点数:20 回复次数:3 
关于栈中变量分配的问题
写了个小程序,想看看局部变量包括指针变量在栈中的分配地址
程序代码:
#include <stdio.h>

/*
    test the pointer to pointer
*/
int main()
{
    char c;
    char *p1;
    char **p2;

    p1 = &c;
    p2 = &p1;

    printf("%p\n", &c);
    //printf("%p\n", p1);
    printf("%p\n", &p1);
    //printf("%p\n", p2);
    printf("%p\n", &p2);


    return 0;
}

输出结果是
0022FF1F
0022FF18
0022FF14
我知道在栈中,变量的分配是由高地址向低地址顺序分配,而且在32位系统中,指针变量分配四个字节,所以我明白p1和p2的地址相差4个值,但是不明白c的地址和p1的地址为什么相差这么多?按理说应该相差1的。
我将char c;改为int i;后,i的地址是0022FF1C,和我的想法就一致了。
请教字符c的地址为什么是这样?
搜索更多相关主题的帖子: color 
2015-10-26 16:01
hanwang3
Rank: 1
等 级:新手上路
帖 子:24
专家分:7
注 册:2015-8-24
收藏
得分:0 
回复 2楼 rjsp
很多概念自己还是没弄清楚,所以自己敲代码检验检验。
您给的地址是不是有点问题,x是一个字节,_x是什么意思?
2015-10-26 16:20
hanwang3
Rank: 1
等 级:新手上路
帖 子:24
专家分:7
注 册:2015-8-24
收藏
得分:0 
回复 3楼 wmf2014
内存对齐还不了解,我去查查,不过感觉有道理。
2015-10-26 16:21
hanwang3
Rank: 1
等 级:新手上路
帖 子:24
专家分:7
注 册:2015-8-24
收藏
得分:0 
回复 7楼 TonyDeng
知道原因,知道结果,心情就好了呀~
2015-10-26 21:24
快速回复:关于栈中变量分配的问题
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.031853 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved