结构体是一种集合,它里面包含了多个变量或数组,它们的类型可以相同,也可以不同,每个这样的变量或数组都称为结构体的成员 (Member)
形容一个人:姓名、性别、手机号、地址
char name[]="jock";
char sex='m';
int phone=186 XXXX XXXX;
char address[]="guangzhou";
定义一个人类的结构体类型
struct Person
{
//成员变量
int phone;
char name[];
char sex;
char address[];
};
1、在结构体的最后需要加一个分号 ;
2、struct 表示结构体的关键字
3、struct+Person 就相当于一个新的类型,相当于 int
4、结构体就是有 1 个或者多个基本数据类型,合在一起组成的一个新的综合数据类型
创建一个结构体类型的变量
struct Person P={"jock","guangzhou",123,'m'}; //P就是 strut Person类型的一个变量
使用结构体里面的数据
结构体使用.点语法调用里面的成员变量
printf("P的名字是%s,手机号是%d\n",P.name,P.phone);
struct Student
{
char name[20];
int num;
float score;
};
struct Student S={"xiaoming",001,98.5};
printf("学生姓名是%s,学号是%d,分数是%f\n",S.name,S.num,S.score);
typedef 类型重命名(只能对类型重新定义)
就相当于给原类型(如 int)起了个别名(如 Myint),需要被定义的类型写在前面,自定义的类型写在后面
int a=3;
typedef int Myint;
Myint b=4;
printf("b=%d\n",b);
typedef struct Person sP;
sP p1={"marry","HK",123,'w'};
printf("姓名是%s\n",p1.name);
练习:利用 typedef 重新定义结构体
#include "stdafx.h"
#include <stdio.h>
int main(int argc, char* argv[])
{
typedef struct Student1
{
char name[20];
int num;
float score;
}sS;
sS S1={"锐雯",1,100.00};
sS S2={"艾克",2,75.5};
sS S3={"提莫",3,32.5};
if(S1.score>S2.score&&S1.score>S3.score)
{
printf("成绩最高的人是%s\n",S1.name);
}
else if(S2.score>S1.score&&S2.score>S3.score)
{
printf("成绩最高的人是%s\n",S2.name);
}
else
{
printf("成绩最高的人是%s\n",S3.name);
}
return 0;
}
运行结果
结构体的内存字节数
1、结构体在内存里面的储存单位,按照其成员变量里面最大的来开辟
2、结构体的字节对齐,是以数据类型在内存里面占多少个字节作为对齐方式的
#include "stdafx.h"
#include <stdio.h>
int main(int argc, char* argv[])
{
struct Student
{
double f;
float height;
int num;
char name[5];
char sex;
};
struct Student s={98};
printf("s在内存里面占的字节数为%d\n",sizeof(struct Student));
return 0;
}
运行结果
End of File
行文过程中出现错误或不妥之处在所难免,希望大家能够给予指正,以免误导更多人,最后,如果你觉得我的文章写的还不错,希望能够点一下喜欢和关注,为了我能早日成为简书签约作者献上一发助攻吧,谢谢!^ ^









网友评论