C语言学习笔记:结构体

✨博文作者:烟雨孤舟
喜欢的可以 点赞 收藏 关注哦~~

✍️ 作者简介: 一个热爱大数据的学习者

✍️ 笔记简介:作为大数据爱好者,以下是个人总结的学习笔记,如有错误,请多多指教!

目录

简介

结构体定义

结构体嵌套

结构体递归

结构体初始化

访问结构成员

结构体数组

结构体指针变量

结构体函数


简介

数组可存储相同类型数据项的变量,结构体是一种用户自定义的可用的数据类型,它允许存储不同类型的数据项。

结构体:结构体是一种集合,可以包含多个变量或数组,该数据类型由一组称为成员的不同数据组成,每个成员可以具有不同的类型。结构体通常用来表示类型不同但又相关的若干数据。

结构体定义

1.先定义结构体类型,之后定义结构体变量:
定义结构体类型:
struct 结构体名 { 
    数据类型说明符 成员1;
    数据类型说明符 成员2; };
定义结构体变量:
struct tag 变量1,变量n;
2.定义结构体类型的同时定义结构体变量:
struct     结构体名称 
{    数据类型说明符 成员1;
    数据类型说明符 成员2;
}结构体变量;
3.直接定义结构体变量:
struct     
{    数据类型说明符 成员1;
    数据类型说明符 成员2;
}结构体变量;
4.typedef 类型重命名:
typedef 类型名 别名;
typedef int sad;
sab a,b;等价:int a,b;
typedef只是对已有的数据类型增加一个新的替换名,并不是定义新的类型,也不是取代现有的类型名。
声明了一个结构体,相当于构造了一种新的数据类型,此时系统并不为它分配内存空间,只有定义力结构体类型的变量,系统才为该变量分配内存空间,声明了结构体后,就可以定义结构体类型的变量,
//声明拥有2个成员的结构体和结构体变量s1,这个结构体并没有标明结构名
struct 
{   int a;
     double c;
} s1; 
//声明了拥有2个成员的结构体,结构体名为SIMPLE,没有声明结构体变量
struct SIMPLE
{   char b;
    double c;
};
//使用SIMPLE标签的结构体,另外声明了变量t1、t2、t3
struct SIMPLE t1, t2[20], *t3;

//也可以用typedef创建新类型
typedef struct
{   int a;
    char b;
    double c; 
} Simple2;
//现在可以用Simple2作为类型声明新的结构体变量
Simple2 u1, u2[20], *u3;

结构体嵌套

嵌套结构体类型就是一个结构体类型中包含结构体类型的成员项。
struct 结构体名1{
    数据类型 成员1;
    struct 结构体名2;
}
struct 结构体名1{
    数据类型 成员1;
    struct 结构体名2{
    数据类型 成员2;
    }
}

结构体递归

结构体递归定义就是在一个结构体类型内部包含具有自身结构体类型的成员项
struct 结构体名{
  数据类型 成员1;
  struct 结构体名 ;
}
注意:在结构体递归定义中必须使用本结构体类型的指针成员项,不能使用不跟结构体类型的普通成员项。

结构体初始化

struct 结构体名{
  数据类型    成员1;
  数据类型  成员2;
}结构体变量={赋值给成员1的值;赋值给成员2的值},结构体变量;//赋值
struct student{
    char s[10];
    int age;
}stu1={"zhangsan",15};

代码:
#include 
 struct Books
{
   char  title[50],author[50],subject[100];
   int   book_id;
} book = {"C语言", "RUNOOB", "编程语言", 123456};
int main(){
printf("title:%s\nauthor:%s\nsubject:%s\nbook_id: %d\n", book.title, book.author, book.subject, book.book_id);
}
//title:C语言  author: RUNOOB subject: 编程语言book_id:123456

访问结构成员

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

结构体变量成员的表示:
    结构体变量名.成员名
    stu.age
例如:
struct student{
    char sxn[10];
    int age;
}stu1={"zhangsan",15};
printf("%S",stu1.sxn)
//stu1.sxn的值为zhangsan
结构体变量成员的赋值:
    stu.age=15
    printf("%d,stu.age")

结构体数组

当数组数据元素的类型为结构体类型时,数组就是结构体类型的数组。结构体数组的每一个数据元素都是具有相同结构体类型的下标结构体变量
struct 结构体名{
  数据类型    成员1;
  数据类型  成员2;
}结构体数组;
struct student{
    char s[10];
    int age;
}stu[10];
结构体数组成员的表示:
    结构体变数组名[下标].成员名
    stu[0].age
结构体数组初始化
struct student{
    char s[10];
    int age;
    }stu[2]={{"sdsfa",2},{'ed',4}};

结构体指针变量

结构体指针变量就是指定结构体变量的指针变量。可以使用结构体指针变量间接访问结构体变量,结构体指针变量的值就是所指向的结构体变量的首地址
结构体指针变量定义的一般形式:
struct 结构体名 *结构体指针变量名
struct studebt *stu;
赋值:
stu=&stu1;
访问:
结构体指针变量->成员或者(*结构体指针变量名).成员
stu->num或者(*stu).num

结构体函数

函数返回值的类型时结构体类型,则称该函数为结构体类型函数。
一般形式:
struct 结构体类型名 函数名(形参列表){
    函数体
}

你可能感兴趣的:(C语言,学习,笔记,c语言)