作者前言
🎂 ✨✨✨✨✨✨🍧🍧🍧🍧🍧🍧🍧🎂
🎂 作者介绍: 🎂🎂
🎂 🎉🎉🎉🎉🎉🎉🎉 🎂
🎂作者id:老秦包你会, 🎂
简单介绍:🎂🎂🎂🎂🎂🎂🎂🎂🎂🎂🎂🎂🎂🎂🎂
喜欢学习C语言和python等编程语言,是一位爱分享的博主,有兴趣的小可爱可以来互讨 🎂🎂🎂🎂🎂🎂🎂🎂
🎂个人主页::小小页面🎂
🎂gitee页面:秦大大🎂
🎂🎂🎂🎂🎂🎂🎂🎂
🎂 一个爱分享的小博主 欢迎小可爱们前来借鉴🎂_______________________________________________________
______________________________________________________________________
目录
结构体
插播小知识
1.char 、int 、short、double、等等都是C语言的内置类型
结构体的声明
结构的基础知识
结构是一些值的集合,这些值称为成员变量。结构的每个成员可以是不同类型的变量
结构的声明
struct tag{member - list ;} variable - list ;
#include <stdio.h>
struct Studey
{//描述学生的相关属性char name[20];int age;char sex[5];char tele[12];
} s3, s4;
//s3.s4是结构体类型的变量
//全局变量
int main()
{struct Studey s1;struct Studey s2;return 0;
}
代码中有两种定义结构体类型 ,s3,和s4的定义的是结构体类型变量,是全局变量,s1和s2定义结构体类型变量,是局部变量,
有小可爱觉得定义结构体类型变量有点繁琐,我们可以使用typedef类型重定义
#include <stdio.h>
typedef struct Studey
{//描述学生的相关属性char name[20];int age;char sex[5];char tele[12];
} Stu;
int main()
{Stu s1;Stu s2;return 0;
}
结构成员的类型
结构的成员可以是变量、数组、指针,甚至是其他结构体。
#include <stdio.h>
struct B
{char c;int i;
};
struct C
{char c;int num;int arr[10];double* pd;struct B b;struct B* pb;
} s0;
struct B s1;
int main()
{return 0;
}
结构体变量的定义和初始化
#include <stdio.h>
struct B
{char c;int i;
};
struct C
{char c;int num;int arr[10];double* pd;struct B b;struct B* pb;
} s0;
struct B s1;
int main()
{// 按照顺序初始化double a = 10;struct C s2 = { 'q', 100, {1,2,3}, &a, {'a', 99}, NULL };//指定成员初始化struct C s3 = { .c = 's', .num = 100 };return 0;
}
初始化有两种,一种是全部初始化,一种是部分初始化。
结构体成员的访问
.
->
#include <stdio.h>
#include <string.h>struct S
{char name[20];int age;
};
void set_s(struct S* t)
{//s.name = "zhangsan";t->age = 18;strcpy(t->name, "张三");}
int main()
{struct S s = { 0 };//写一个函数给s中存放数据set_s(&s);return 0;
}
需要注意的是往数组名里写入数据要使用strcpy ,因为数组名是一个常数,往常数里面是不能写入数据的,
结构体传参
#include <stdio.h>
#include <string.h>struct S
{char name[20];int age;
};
void set_s(struct S* t)
{//s.name = "zhangsan";t->age = 18;strcpy(t->name, "张三");}
void prit_s(struct S* s)
{printf("%d\n%s", s->age, s->name);
}
int main()
{struct S s = { 0 };//写一个函数给s中存放数据set_s(&s);//打印结构体prit_s(&s);return 0;
}
如果是打印结构体一般是传地址过去,因为创建形参会在栈区申请一块空间,如果使用传值,空间的申请就很大,如果传址,就会节省很大空间,
总结:
结构体就介绍到这里了,有不懂的小可爱可以私聊我