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语言学习笔记---结构体的定义和初始化相关推荐
- c语言学习笔记【结构体02】结构体指针变量与结构体变量的函数参数,C语言学习笔记结构体02结构体指针变量与结构体变量的函数参数.docx...
C 语言学习笔记[结构体02]结构体指针变量与结构体变量 的函数参数 C 语言学习笔记之结构体指针变量一提指针,那可 是 C 语言的核心了,有多少学子曾拜倒在指针的脚下.单纯的说指针,其实并不难,但是 ...
- C语言学习笔记---结构体中的字符数组和字符指针
在结构体中可以使用字符数组来存储字符串,也可以使用字符指针来存储字符串.比如: struct str{char s1[5];char s2[5];};struct str str1= {" ...
- C语言学习笔记---结构体作为函数参数和返回值
结构体不仅可以作为函数的参数传递,也可以作为函数的返回值.现在就分别来看一下这两种情况. 结构体作为参数 struct score {int chinese;int math;int englis ...
- C语言学习笔记---结构体指针
既然结构体是一种数据类型,那么除了使用变量本身来访问结构体之外,也可以使用指针来访问结构体.下面通过一个简单的例子来演示一下: struct Date{int year;int month;int ...
- C语言学习笔记---结构体数组初始化
既然结构体是一种数据类型,那么它也可以定义为数组的形式.比如要描述一本书的信息,可以将书的名称,作者,价格这些信息用一个结构体来描述,在使用的过程中不可能只描述一本书,所以就需要使用一个结构体数组 ...
- Go语言学习笔记——结构体中使用tag标记
文章目录 golang结构体中使用tag标记 简介 语法结构 快速入门 常见应用 应用json编码 应用xml编码 应用form表单绑定 gin框架form和数据绑定 golang结构体中使用tag标 ...
- c++结构体定义和使用_【C语言更新】结构体的定义及使用
文/Edward首先先思考一个问题,假设某一天你去了一家策划公司,接到了一个策划需求,比如为新上市的某款手机写一个市场推广的文案,并且在电脑上面打印出来.那么在写这个文案的时候,你肯定是会需要着重地去 ...
- c语言中申请内存并初始化,c语言中结构体的定义、初始化及内存分配
#include struct person { char *name; int age; }; int main() { //结构体可以定义在函数内,也可以定义到函数外 //相当于全局变量与局部变量 ...
- Go语言学习、结构体
最近疫情比较严重,过年也不能出门,闲来无事,继续更新博客吧. 武汉加油! 我们来继续说下go语言中的结构体 比如我们现在想存储一个学生信息,如:学号.姓名.年龄.性别,等信息,按照我们以前的存储习惯, ...
最新文章
- 网页设计过程中一般命名规则
- 一个类怎样引用另外一个类的成员变量或方法
- 【学习笔记】人类为什么最终选择了芯片
- pythoncsv数据怎么读_python如何读写csv数据
- python画完图 程序暂停运行_Python编程:认识IDLE,编写保存运行第1个程序
- 五大常用经典算法—回溯算法
- 工厂模式---设计模式(二)
- DES加密解密算法(前端后端)
- Android大环境杂谈待续中
- 【Python】shuffle函数
- 基于比较的排序算法集
- java 占位符_Java重要知识点
- 【人民币识别】基于matlab GUI人民币序列号识别【含Matlab源码 908期】
- “时间复杂度”的另类解释
- 什么是运行时应用程序自我保护(RASP)Runtime Application Self-Protection
- 和计算机相关的英文名字女孩,简单好听寓意好的英文名字女孩
- 前端面试题及解答(尽量口语化,模拟面试现场时的回答)
- MAC微信接收到的文档打开都变成(只读)解决办法
- 纯正国内的海盗王3.0修复端
- 柳传志:联想发展过程中的三大突破