当前位置: 首页 >> 程序设计 >> C和VC中分配变量地址的问题
 

C和VC中分配变量地址的问题

作者:      来源:http://blog.csdn.net/hadao     发表时间:2007-05-01     浏览次数:      字号:    

#include <stdio.h>
struct struct_A
{
int a; //4
char b; //1
int c;  //4
short d;  //2
}a;

struct struct_B
{int a;  //4
char b;      //1
short c;   //2
int d;    //4
}b;

int main()
{
printf("%d,%d",sizeof(a),sizeof(b));
return 0;
}

上述程序在KEILC,WINTC 和VC中运行的结果分别是:
1792,1792
7,7
16,12
可见,在KEIL C和WINTC中都是按照顺序分配为变量分配地址,在VC中分配的地址指遵循 “4的倍数”原则。即如果连续几个变量的长度不超过4字节,则分配4字节内,否则分配到下4个字节开始处。
    上述程序中a中的4个变量地址分别为0X13FF70,0X13FF74,0X13FF78,0X13FF7C
    b中4个变量的地址分别为0X13FF74,0X13FF78,0X13FF7A,0X13FF7C

因为b中char b 和short c 可以分配在4个字节之内,所以两个变量共分配了4个字节的空间。而a中相邻两个变量的长度都超过4个字节,故为每个变量都分配了4个字节的空间。

责任编辑 webmaster

 
 
 
 
 
评论更多>>
 
 
 
发表
 
姓名: QQ:
性别: MSN:
E-mail: 主页:
评分: 1 2 3 4 5
评论内容:
验证码:
  
  • 请遵守《互联网电子公告服务管理规定》及中华人民共和国其他各项有关法律法规。
  • 严禁发表危害国家安全、损害国家利益、破坏民族团结、破坏国家宗教政策、破坏社会稳定、侮辱、诽谤、教唆、淫秽等内容的评论 。
  • 用户需对自己在使用本站服务过程中的行为承担法律责任(直接或间接导致的)。
  • 本站管理员有权保留或删除评论内容。
  • 评论内容只代表网友个人观点,与本网站立场无关。
  •