当前位置:   article > 正文

C++/Qt结构体初始化_qt 结构体初始化

qt 结构体初始化

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

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; 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27

2、结构体内整体初始化

typedef struct stTemp 
{ 
	int nName;   
	int nType;   
	char arrayTemp[50];
	stTemp()
	{ 
	memset(this,0,sizeof(stTemp));
	}
}STT; 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10

3、定义变量时初始化

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

STT stMy = {0};
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

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
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小小林熬夜学编程/article/detail/730766
推荐阅读
相关标签
  

闽ICP备14008679号