如何对结构体变量进行初始化

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何对结构体变量进行初始化相关的知识,希望对你有一定的参考价值。

我自己大概摸索出来了 还是谢谢大家

方法是在定义变量的同时给其一初始值。结构体变量的初始化,遵循相同的规律。
简单变量的初始化形式如下:
数据类型 变量名=初始化值;
例如,定义整型变量a,并给其初始化值10的语句如下
int a=10;
数组的初始化,需要通过一常量数据列表,对其数组元素分别进行初始化,形式如下:
数据类型 数组名称〔数组长度〕=初始化值1,初始化值2,…, 初始化值n;
例如,定义长度为5的整型数组,并对其初始化的语句如下:
int A[5]=20,21,0,3,4;
结构体变量的初始化方式与数组类似,分别给结构体的成员变量以初始值,而结构体成员变量的初始化遵循简单变量或数组的初始化方法。具体的形式如下:
struct 结构体标识符

成员变量列表;

;
struct结构体标识符 变量名=初始化值1,初始化值2,…, 初始化值n ;
例如,定义struct Point类型变量,并初始化的语句如下:
struct Point oP1=0.0,0.2,0.3;
struct Point类型变量oP1的三个成员变量的值分别为
oP1.x=0.0,
oP1.y=0.2
oP1.z=0.3
由于定义结构体变量有三种方法,因此初始化结构体变量的方法对应有三种,上面已经介绍了其中的一种形式,其他两种形式如下:
struct Point

double x;
double y;
double z;
oP1=0.0,0.2,0.3; struct

double x;
double y;
double z;
oP1=0.0,0.2,0.3;
在初始化结构体变量时候,既可以初始化其全部成员变量,也可以仅仅对其中部分的成员变量进行初始化。例如:
struct Student

long id;
char name[20];
char sex;
a= 0;
其相当于a.id=0;a.name=“”;a.sex=‘\0x0’。
仅仅对其中部分的成员变量进行初始化,要求初始化的数据至少有一个,其他没有初始化的成员变量由系统完成初始化,为其提供缺省的初始化值。
参考技术A 结构体初始化可以再定义时制定初始值,如:
struct student

int num;
char name[20];
student1 = 10001,"zhangxin";
也可以采取申明类型与定义变量分开的形式,在定义变量时进行初始化:
student student1 = 10001,"zhangxin"

c语言如何对结构体某一成员初始化

结构体与类一样可以定义一个构造函数。
如下:
struct s
s()
a=0;

int a;

每次声明一个结构体变量时都会调用结构体的构造函数,在构造函数里面添加初始化语句就可以了来自:求助得到的回答
参考技术A 有以下几种方法:
1 使用构造函数。
在C++中,struct可以当做类(class)来使用,同样支持成员函数,构造函数,析构函数。所以可以写对应的构造函数,实现自由初始化。

2 定义时,按照成员变量位置,写初始化列表。
如struct test中有成员int a, char b, 和float c,那么初始化一个变量可以写作
struct test t1 = 100, 'A', 1.23;
当初始化列表不全时,省略部分自动初始化为0,即
struct test t1 = 100, 'A';

struct test t1 = 100, 'A', 0;
等效。

3 部分编译器支持显示成员变量初始化,如g++。

struct test t1 = .b= 'A', .a=100;
没有涉及到的变量初始化为0.该种方式不是所有编译器都支持,当代码有跨平台需求时需谨慎使用。

以上是关于如何对结构体变量进行初始化的主要内容,如果未能解决你的问题,请参考以下文章

宏定义中对结构体变量进行初始化,结构体成员变量前为啥加点号??

结构体变量初始化问题

c语言如何对结构体某一成员初始化

C++静态结构体数据成员的初始化

函数外面对单个结构体成员进行赋值出错

C++结构体如何设置默认值?