结构体可变数组

#include"stdio.h"
#include"malloc.h"
#include<string.h>
#include <stdlib.h>
//int 4字节,char 1个字节
struct node{
	int member1;
	char member2[10];
	int member3[0];//变长数组
};
void main()
{
	struct node *xiaobo1;
	//printf("%d",sizeof( struct node));
	xiaobo1 = malloc(sizeof(struct node)+3*sizeof(int));//变长分配内存
	memset(xiaobo1,0,sizeof(*xiaobo1));
	(*xiaobo1).member1 = 1;
	strcpy((*xiaobo1).member2,"xiaobo1");
	(*xiaobo1).member3[0] = 30;
	(*xiaobo1).member3[1] = 31;
	(*xiaobo1).member3[2] = 32;
	printf("xiaobo1的内存大小%ld\n",sizeof(xiaobo1));
	printf("member1的地址:%p,值:%d\n",&((*xiaobo1).member1),(*xiaobo1).member1);
	printf("member2的地址:%p,值:%s\n",&((*xiaobo1).member2),(*xiaobo1).member2);
	printf("member3[0]的地址:%p,值:%d\n",&((*xiaobo1).member3[0]),(*xiaobo1).member3[0]);
	printf("member3[1]的地址:%p,值:%d\n",&((*xiaobo1).member3[1]),(*xiaobo1).member3[1]);
	printf("member3[2]的地址:%p,值:%d\n",&((*xiaobo1).member3[2]),(*xiaobo1).member3[2]);
	free(xiaobo1);
	/*
	输出结果:
	xiaobo1的内存大小8
	member1的地址:0x55eb504c7260,值:1
	member2的地址:0x55eb504c7264,值:xiaobo1
	member3[0]的地址:0x55eb504c7270,值:30
	member3[1]的地址:0x55eb504c7274,值:31
	member3[2]的地址:0x55eb504c7278,值:32
	这里注意一下内存对齐,就可以理解这些地址了。
	*/

}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值