结构体
>结构体类型的声明
类型一:
#include<stdio.h>
//struct 结构体关键字 Stu-结构体标签 struct Stu -结构体类型
typedef struct Stu
{
//成员变量
char name[20];
short age[6];
char tele[11];
char sex[2];
}Stu;//类型
int main()
{
struct Stu s1 = {"A k",19,"123456789","男"};
Stu a2 = {"A f",20,"651234789","女"};
return 0;
}
类型二:
#include<stdio.h>
struct S
{
int a;
char c;
char arr[20];
double d;
};
struct T
{
char ch[10];
struct S s;
char* pc;
};
int main()
{
char arr[10] = "hello ss\n";
struct T t = { "haha", { 22, 'z', "hello world", 1.85 }, arr};
printf("%s\n", t.ch);//haha
printf("%s\n", t.s.arr);//hello world
printf("%lf\n", t.s.d);//1.85
printf("%s\n", t.pc);//hello ss
return 0;
}
代码执行:
结构是一些值的集合,这些值称为成员变量。结构的每个成员可以是不同类型的变量。
>结构体初始化
>结构体成员访问
>结构体传参
#include<stdio.h>
typedef struct Stu
{
//成员变量
char name[20];
short age;
char tele[11];
char sex[4];
}Stu;
Print1(Stu student)
{
printf("name: %s\n",student.name);
printf("age: %d\n",student.age);
}
Print2(Stu* ps)
{
printf("tele: %s\n", ps->tele);
printf("sex: %s\n", ps->sex);
}
int main()
{
Stu s = { "张三", 45, "456123789", "女" };
Print1(s);
Print2(&s);
return 0;
}
分析:上面的Print1与Print2哪个好》
首选Print2函数。函数传参的时候,参数是需要压栈的。如果传递一个结构体对象的时候,结构体过大,参数压栈的系统开销较大,所以会导致性能下降。所以,结构体传参的时候,要传结构体的地址。
代码实现: