C++/Qt结构体初始化

17 篇文章 5 订阅

结构体初始化我们经常会用到,使用未初始化的结构体,结果是不可预估的
下面介绍几种常用的结构体初始化方式:

1、结构体内分别初始化

typedef struct stTemp 
{ 
	int nName;   
	int nType;   
	char arrayTemp[50];
	stTemp():nName(-1),nType(-1) //构造函数初始化列表 
	//也可用 struct stTemp():nName(-1),nType(-1)  vs2015可用
	//但struct关键字部分编译器不识别
	{ 
	memset(arrayTemp,0,sizeof(arrayTemp));
	}
}STT;  
 
//或  

typedef struct stTemp 
{ 
	int nName;   
	int nType;   
	char arrayTemp[50];
	stTemp()
	{  
	nName = -1; 
	nType = -1;
	memset(arrayTemp,0,sizeof(arrayTemp));
	}
}STT; 

2、结构体内整体初始化

typedef struct stTemp 
{ 
	int nName;   
	int nType;   
	char arrayTemp[50];
	stTemp()
	{ 
	memset(this,0,sizeof(stTemp));
	}
}STT; 

3、定义变量时初始化

typedef struct stTemp 
{ 
	int nName;   
	int nType;   
	char arrayTemp[50];
}STT;  

STT stMy = {0};

4、用结构体指针分别初始化

很多时候,结构体指针就是结构体内第一个元素的指针,所以有时候可以这样初始化:

typedef struct stBase 
{ 
	int id; 
	int width; 
	int height;
	const char *name;
}STBASE; 

typedef struct stTemp 
{ 
	STBASE a; 
	STBASE b; 
	STBASE c;  
	const char name[3][16] = {{"中国"},{"美国"},{"英国"}};
	struct stTemp () 
	{ 
			STBASE *val = 0; 
			val = (STBASE*)this; 
			for(int i=0; i<3; ++i) 
			{ 
		 	val->id = 0; 
		 	val->width = -1; 
		 	val->height = -1; 
		 	val->name = name[i]; 
		 	++val;
 			}
	}
}STT;
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值