C语言学习--结构体

C语言提供了基本的数据结构,例如 char 、short 、int 、float....等类型;这些偶称为内置类型。怎样设计出来属于自己的类型?

程序员可以使用结构体来封装一些属性,设计出新的类型,在C语言中称为结构体类型。

目录

结构体定义

结构体初始化

结构体的访问


结构体定义

struct 结构体名{

成员列表(可以是基本的数据类型,指针,数组或其他结构类型)

};

struct 结构体名字 变量名字;

或者

typedef struct{

成员列表(可以是基本的数据类型,指针,数组或其他结构类型)

} 结构体名;

结构体名字 变量名字;

cpp 复制代码
struct Date{
	int year;
	int month;
	int day;
};

int main(){

    struct Date a;

}

typedef相当于给结构体取了一个名字

cpp 复制代码
typedef struct {
	int year;
	int month;
	int day;
}Date;

int main(){

    Date a;

}

结构体初始化

变量的初始化就看哪里声明了变量,声明的同时初始化就行。

cpp 复制代码
struct Books
{
   char  title[50];
   char  author[50];
   char  subject[100];
   int   book_id;
} ;
struct Books book = {"C 语言", "RUNOOB", "编程语言", 123456}
 
//或者
typedef struct 
{
   char  title[50];
   char  author[50];
   char  subject[100];
   int   book_id;
}Books;
 
Books book = {"C 语言", "RUNOOB", "编程语言", 123456};

声明的语法为:用大括号括起来,用逗号分隔,然后根据变量的顺序依次赋值,注意每个初始化项目必须要和要初始化的结构体成员类型相匹配。

如果在定义结构体变量的时候没有初始化,那么后面就不能全部一起初始化了,意思就是:

cpp 复制代码
struct Books book;
 
//这样是不允许的
book = {"C 语言", "RUNOOB", "编程语言", 123456};

另外,结构体可以和数组一样,全部初始化为0。

cpp 复制代码
struct student stu = {0};

结构体的访问

为了访问结构的成员,我们使用成员访问运算符(.)

结构体变量名.成员名;

cpp 复制代码
book.title = "JAVA 语言";
book.author = "NOGET";
book.subject = "另一种编程语言";
book.book_id = "789";

//如果其成员本身又是一种结构体类型,

//那么可以通过若干个成员运算符,一级一级的找到最低一级成员再对其进行操作;结构体变量名.成员.子成员.........最低一级子成员;

相关推荐
Navigator_Z1 小时前
LeetCode //C - 1208. Get Equal Substrings Within Budget
c语言·算法·leetcode
浔溺2 小时前
al+大数据每日学习笔记26
笔记·学习
xx~t2 小时前
嵌入式——进程与线程1
linux·c语言·学习·嵌入式·进程与线程
m0_547486662 小时前
《JavaScript核心原理 》全套PPT课件2026
开发语言·javascript·ecmascript
老当益壮梁奶奶2 小时前
Linux软件编程学习笔记(七):线程分离与线程间通信详解
linux·c语言·c++·笔记·学习
MC皮蛋侠客3 小时前
Tauri 2.x 系列(五):调用系统 API——官方插件、Rust crate 与原生能力
开发语言·后端·rust
布莱克6053 小时前
软中断和硬中断的区别
开发语言·操作系统
我命由我123454 小时前
UI 设计 7 种排列方式
xml·学习·ui·html·产品运营·产品经理·学习方法
whcyhhh4 小时前
头歌实践教学平台:数据科学与大数据技术导论(十二)
大数据·开发语言·python·数据清洗
常驻客栈4 小时前
B-深入理解计算机系统第3版之第8章:异常控制流
笔记·学习·常驻客栈·深入理解计算机系统·学习笔记‘’