struct结构体

结构体内存分配

 

struct   student
{

      int   num;
     char   addr[10];
      int   age; 
      char   name[10];
}stu;                            

int   num 占4字节,   正好一个字长32位
char   addr[10];   占12个字节,为addr分配10个字节,剩下2   个字节无用,因为下次分配从字长边界开始
int   age;    占4字节,   正好一个字长32位
char   name[10];   占12个字节,为addr分配10个字节,剩下2   个字节无用,因为下次分配从字长边界开始
10*2+4*2+2*2=32

 

struct   student
{

      int   num; 
      int   age;
      char   addr[10];
      char   name[10];
}stu;
int   num;占4字节,   正好一个字长32位
int   age;占4字节,   正好一个字长32位
char   addr[10];
char   name[10];后面两个加起来正好20字节,为字长倍数,正好对齐
10*2+4*2=28

 

结构体声明的时候,变量的排序会直接影响到内存的分配,应尽量把变量字节大的放在前面

 

动态分配内存空间

struct student *pstrStu;
int g; /*要分配内存的个数*/
/*分配内存*/
pstrStu = (struct student*)malloc(sizeof(struct student)*g)

/*操作*/
.......

/*操作完成,释放内存*/
free(pstrStu);

 

还有new delete,记住要成对出现

cout<<"Input student num:"
cin>>g;
student *Students = new tudent[g];
for(int i=0;i<g;i++)
{
    cin>>Students
.name;
    cin>>Students
.age;
    cin>>Students
.c;
    cin>>Students
.en;
    cin>>Students
.score;
}

...

delete []Students;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值