结构体的基础知识
结构体是一些值的集合,这些值成为成员变量。结构体的每个成员变量可以是不同类型的变量。
结构体的声明定义以及使用
方法一:
struct Stu
{
char name[20];//名字
int age;//年龄
char sex[5];//性别
char id[20];//学号
};
int main()
{
//struct 结构体变量 Stu 结构体标签(可以自己定) struct Stu 结构体类型 s结构体变量名
struct Stu s1={"小明",19,"男",2222};//可以理解为struct Stu类似于int类型 s1是局部变量
return 0;
}
方法二:
struct Stu
{
char name[20];//名字
int age;//年龄
char sex[5];//性别
char id[20];//学号
}s1,s2,...;//s1,s2都是全局结构体变量
int main()
{
//struct 结构体变量 Stu 结构体标签(可以自己定) struct Stu 结构体类型 s结构体变量名
struct Stu s1={"小明",19,"男",2222};//可以理解为struct Stu类似于int类型
return 0;
}
方法三:
typedef struct Stu
{
char name[20];//名字
int age;//年龄
char sex[5];//性别
char id[20];//学号
}ST;//这里的ST是结构体类型,相当于方法一,二中的struct Stu
int main()
{
ST s1={"小明",19,"男",2222};
return 0;
}
方法二:
typedef struct Stu
{
char name[20];//名字
int age;//年龄
char sex[5];//性别
char id[20];//学号
}ST;//这里的ST是结构体类型,相当于方法一,二中的struct Stu
void print1(ST tmp){
printf("name:%s\n",tmp.name);
printf("age:%d\n",tmp.age);
printf("sex:%s\n",tmp.sex);
printf("id:%d\n",tmp.id);
}
void print2(ST*tmp){
printf("name:%s\n",tmp->name);
printf("age:%d\n",tmp->age);
printf("sex:%s\n",tmp->sex);
printf("id:%d\n",tmp->id);
}
int main()
{
ST s1={"小明",19,"男",2222};
print1(s1);
print2(&s1);
return 0;
}
结构体成员可以说标量,数组,指针,甚至是其他结构体。
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[]="hello bit\n";
struct T x={"hhh",{11,'g',"hello word",3.14},arr};
printf("%s\n",x.ch);
printf("%d\n",x.s.a);
printf("%c\n",x.s.c);
printf("%s\n",x.s.arr);
printf("%lf\n",x.s.d);
printf("%s\n",x.pc);
return 0;
}