结构体类型的声明
结构体初始化
结构体成员访问
结构体传参
1.结构体的声明
1.1结构的基础知识:结构是一些值的集合,这些值成为成员变量,结构的每个成员可以是不同类型的变量
struct tag//struct是结构体关键字,tag是对象,可以随意替换
{
membr-list;//成员变量
}variable-list;//变量列表
以学生为例,定义一个结构体类型
#define _
#include<stdio.h>
//描述一个学生
//名字,年龄,电话,性别
//定义一个结构体类型
struct stu//struct结构体关键字,stu结构体标签,struct stu-结构体类型
{
//成员变量
char name[20];//名字,是一个字符串数组
short age;//年龄,短整型,
char tale[12];//电话,字符串数组
char sex[5];//性别,字符串数组
}s1, s2, s3;//s1, s2,s3是三个全局的结构体变量,全局变量,,一般很少去这样使用
int main()
{
struct stu s;//创建结构体变量 ,局部的结构体变量
return 0;
}
也可以把结构体进行类型重定义
typedef struct stu//typedef-类型重定义
{
}stu2;//将结构体进行类型重定义,设置乘stu2
int main()
{
stu2 s;//创建结构体变量,通过对结构体进行类型重定义,让它名字变得简便
return 0;
}
1.2结构成员的类型:
结构的成员可以是标量,数组,指针,甚至是其他结构体,而对比数组它只能是相同类型的
2.结构体变量的定义和初始化
struct point
{
int x;
int y;
}p1;//声明类型的同时定义变量p1
初始化
typedef struct stu
{
char name[20];
short age;
char tele[12];
char sex[5];
}stu;
int main()
{
stu s1 = {"张三", "20", "15249445155", "男"};//按照上面定义的类型来进行初始化,给它赋值就是初始化
return 0;
}
结构体里面包含一个结构体
struct s//结构体成员包含了另一个结构体
{
int a;
char c;
char arr[20];
doule d;
};
struct T
{
char ch[10];
struct s s;
char *pc;
};
//初始化结构体包含结构体
int main()
{ //这里的初始化是结构体struct s 所以要初始化struct s里面的成员
struct T t = {"hehe", {100, 'w', "hello wold", 3.14}, NULL};//这个就叫做嵌套结构体初始化,结构体里面包含结构体,凡是有结构体初始化的就要用大括号
//假如要打印struct里面的hehe,就.ch,其他也是同等道理
pritnf("%s\n", t.ch)
//假如要打印struct s里面的100,则可以通过struct T t找到struct s然后在打印a
printf("%s\n", t.s.a);//通过两次.找到原来100所在的结构体然后打印
return 0;
}
3.结构体成员的访问
结构体变量访问成员 结构变量的成员是通过点操作符(.)----普通方式的传参使用点操作符还有指向操 作符(->)---指针传参使用的,点操作符接受两个操作数
typedef struct stu
{
char name[20];
short age;
char tele[12];
char sex[5];
}stu;
void print1(stu tmp)
{
printf("%s\n", tmp->name);//这样也可以
printf("%s\n", tmp.age);//也可以这样去访问结构体成员
}
int main()
{
stu s1 = {};
return 0;
}
4.结构体传参
结构体传参尽量去使用指针传参,因为指针相对于其他的方法会比较省空间,它不用开辟空间,会比较快,就像下面一样去使用指针来进行打印,要使用(->)访问操作符
typedef struct stu
{
char name[20];
short age;
char tele[12];
char sex[5];
}stu;
void print1(stu* tmp)
{
printf("姓名为: %s\n", tmp->name);//这里是指针传参,要使用(->)访问操作符,而不是(.)操作符
printf("年龄为: %d\n", tmp->age);
printf("电话号: %s\n", tmp->tele);
printf("性别为: %s\n", tmp->sex);
}
int main()
{
stu s1 = {"钟易", 18, "13441551454", "男"};
print1(&s1);
return 0;
}
标签:初始化,struct,int,char,stu,结构 From: https://blog.51cto.com/u_16031366/6221948