结构体
**1. 结构体类型的声明
2. 结构体初始化
3. 结构体成员访问
4. 结构体传参
结构体声明
结构体是一些值的集合,这些值称为成员变量,结构体的每个成员都可以使不同类型的变量
结构体成员可以是标量,数组,指针,甚至是其他结构体
//结构体声明
//struct 结构体关键字
//stu 结构体标签
//struct stu 结构体类型
//描述一个学生:名字,年龄,电话,性别
struct stu
{
char name[20];
short age;
char tel[12];
char sex[5];
}s1,s2,s3; //是三个全局的结构体变量
typedef struct stu
{
char name[20];
short age;
char tel[12];
char sex[5];
}stu;
int main()
{
struct stu stu1; //局部的结构体变量
stu stu1;
system("pause");
return 0;
}
结构体初始化
struct a
{
int a;
char b;
char arr[20];
double c;
};
struct b
{
char ch[10];
struct a A;//结构体嵌套声明
char* pc;
};
int main()
{
char arr[]="hello";
struct b A={"www",{1,'w',"hello",5},arr};//结构体嵌套初始化
system("pause");
return 0;
}
结构体成员访问
结构体变量成员的访问是通过操作符 " ."来访问的例如
stu.name=“www”;
void Print1(stu temp)
{
printf("name=&s\n",temp.name);
printf("age=&d\n",temp.age);
printf("tel=&s\n",temp.tel);
printf("sex=&s\n",temp.sex);
}
void Print2()
{
printf("%s",temp->name);
printf("%d",temp->age);
printf("%s",temp->tel);
printf("%s",temp->sex);
}
int main()
{
stu stu1={"李四",2,"123456789","男"};
Print1(stu1);
Print2(&stu1);
system("pause");
return 0;
}
若将结构体地址传到自定义函数里,要用操作符:->,其是针对结构体指针,来访问结构体变量
其中,传址的Print2函数更合适,因为无需重新开辟空间来存储结构体,并且,传参是需要压栈的,如果传递的结构体对象过大,压栈的开销也就响应大,会导致性能下降