目录
1.结构体的定义
2.结构体的定义形式
3.程序示例
4.总结
1. 结构体的定义
1.1 程序开发人员可以使用结构体来封装一些属性,设计出新的类型,在C语言中称为结构体类型。
1.2 在C语言中提供了基本数据类型,比如char,short,int,float…等类型,我们称之为内置类型。而结构体是一种数据类型。(是由程序开发者自己设计的类型)
2. 结构体的定义形式
struct 结构体名
{
成员列表( 可以是基本数据类型, 指针, 数组或其它结构体类型)
};
注:结构体定义的花括号{ }后面的 ”;“不可少,而函数的定义的花括号{ }后面没有分号。
3. 程序示例
3.1 设计学生类型
#include<stdio.h>
/** 学生类型 */
struct Student //student为结构体的类型名
{ //结构体类型的成员
char s_id[10]; //学生id
char s_name[10]; //学生姓名
char s_sex[5]; //学生性别
int s_age; //学生年龄
}; //结构体中 ;不可少
int main()
{
//定义结构体变量 并初始化
struct Student stud = { "s20210414","WartenSIE","man",23 };
//使用 . 来访问结构体变量的成员
printf("id: %s\n", stud.s_id);
printf("name: %s\n", stud.s_name);
printf("sex: %s\n", stud.s_sex);
printf("age: %d\n", stud.s_age);
return 0;
}
运行结果
3.2 指针类型
#include<stdio.h>
struct Student //student为结构体的类型名
{
char s_id[10]; //学生id
char s_name[10]; //学生姓名
char s_sex[5]; //学生性别
int s_age; //学生年龄
};
int main()
{
int a = 10;
int* ip = &a; //将a的地址赋值给ip
//定义结构体变量 并初始化
struct Student s1 = { "s20210414", "WartenSIE", "man", 23 };
struct Student* sp = &s1; //sp = &s1; *sp = s1;
printf("id:%s\n", (*sp).s_id); //(*sp).s_id ==> sp->s_id
printf("id:%s\n", sp->s_id);
printf("ip size:%d\n", sizeof(ip)); //ip的类型为整型指针 int x86 4bit;x64 8bit
printf("sp size:%d\n", sizeof(sp)); //sp的类型为结构体类型指针 x86 4bit;x64 8bit
return 0;
}
运行结果
①. x86平台
②. x64平台
4. 总结
4.1 结构体定义的花括号{ }后面的 ”;“不可少,而函数的定义的花括号{ }后面没有分号。
4.2 定义结构体变量并初始化后,使用 . 来访问结构体变量的成员。
4.3 定义结构体指针类型的变量时struct Student* sp = &s1; 访问结构体变量的成员用(*sp).s_id 或 sp->s_id,一般采用后者。
4.4 整型指针和结构体类型指针在x86平台的字节大小为 4bit;在x64平台的字节大小为 8bit。
4.5 结构体是一种数据类型,是由程序开发者自己设计的类型。