失眠网,内容丰富有趣,生活中的好帮手!
失眠网 > C语言学习笔记---结构体的定义和初始化

C语言学习笔记---结构体的定义和初始化

时间:2022-12-18 04:35:40

相关推荐

C语言学习笔记---结构体的定义和初始化

在C语言中结构体通常用来将不同类型的变量打包在一起,方便对对象的统一管理。

结构体定义

要使用结构体时,首先要进行结构体的声明。声明的形式如下:

struct 结构体名{结构体所包含的变量};

比如现在要描述一本书的标题,作者,价格。声明格式如下:

struct book{char title[30];char author[30];float value;};

用字符数组来存储书的标题和作者,用浮点型来存储书的价格。声明完成之后,此时在内存中并没有分配存储空间。因为结构体也是一种数据类型,它和char、int、float等类型一样属于数据类型。

声明完结构体之后,就告诉了计算机,我要使用的数据类型是结构体类型。在后面操作这个对象的时候,就按照结构体的方式来操作。此时就相当于只写了一个 int ,并没有定义变量。

下面开始定义结构变量。

struct book b1;

此时就在内存中创建了一个结构类型的变量b1,系统就会在内存中给b1分配一个存储空间。

在上面将结构体的声明和变量的定义分成了两部分,也可以使用一起实现。

struct book{char title[30];char author[30];float value;} b1;

用这种方式就可以声明一个结构类型,同时定义了一个结构变量b1。如果还想在定义一个变量b2,可以在初始化的时候定义。也可以单独定义。

单独定义:

struct book b2;

在声明的时候时候定义

struct book{char title[30];char author[30];float value;} b1,b2;

如果这个结构体不需要再定义其他的变量,那么在声明时可以省略结构体名,比如上面的代码就可以简写为:

struct {char title[30];char author[30];float value;} b1,b2;

将结构体名book直接省略掉,但是这样的话,以后如果再想单独定义一个变量b3就不能实现了。

结构体初始化

方法一:

初始化上面定义的两个变量,在定义的时候直接初始化。

struct book{char title[30];char author[30];float value;};struct book b1 = {"语文","张三",19.8};struct book b2 = {"数学","李四",21.3};

初始化的时候,各个项之间用逗号隔开,按照定义时的顺序,依次填入各个成员的值。

方法二:

可以每个成员单独初始化

struct book{char *title;char *author;float value;} b1,b2;b1.value = 19.8;b1.title = "语文";b1.author = "张三";b2.title = "数学";b2.value = 21.3;b2.author = "李四";

定义好变量之后,给每个成员单独初始化,初始化的时候可以不按照顺序来。在单独初始化的时候,这里要注意一下,需要将结构体声明中的的字符数组改为指针。如果还是用字符数组,那么在给数组赋值的时候,只能使用下标,一位一位的给数组中每个元素赋值。而不能将数组定义好之后,然后给数组的首地址一个字符串。字符数组只有在定义的时候,可以直接用字符串赋值。如下所示:

char str[30] = "123"; //正确char str1[30];str1 = "abc";//错误

如果需要给成员单独初始化,就需要将申明中的数组改为指针,如果不想修改的话,那么也可以在定义的时候,直接初始化。

方法三:

在初始化的时候,可以直接使用结构成员运算符—点(.)访问结构体中的成员。这样的话就可以直接指定要向哪个成员赋值。可以不按照顺序来对成员进行赋值。

struct book{char title[30];char author[30];float value;} ;struct book b1={.value = 19.8,.title = "语文",.author = "张三"};struct book b2={.title = "数学",.value = 21.3,.author = "李四"};

在操作结构体中的对象时,也可以使用点来访问。比如需要打印结构成员的信息时,可以使用下面 的代码:

printf("%s %s %f\r\n",b1.author,b1.title,b1.value);printf("%s %s %f\r\n",b2.author,b2.title,b2.value);

在结构体变量后加一个点就可以直接访问变量中的具体成员。成员的操作方法和它对应的类型操作方法一样。

如果觉得《C语言学习笔记---结构体的定义和初始化》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。