1 声明结构体
声明结构体 关键字struct 结构体名字 {类型修饰符 成员名};
声明一个学生的结构体
第一种方法
struct student{
char name[20]; // 结构体成员中可以使用另外的构造类型.
int number; // 每个成员之间使用;隔开.
int age;
float score;
};
typedef struct student Student; // 将现有的类型修饰符该别名为 Student
关键词 typedef 用于改别名
第二种方法
typedef struct teacher{
char name[20];
char gender;
int age;
char major[20];
}Teacher;
第二种最常用
结构体声明写在main函数上边或写在.h文件中
2 结构体的使用(在main函数中)
struct teacher tea1 = {"shenqingchang",'m',23,'c'};
// 结构体成员变量不能使用变量名全部输出成员信息
printf("%s",tea1);不对的输出
正确输出
printf("%s",tear1.name);
修改成员名
int a = 0;
a = 10;
修改第一名老师的年龄为 15
tear1.age = 15;
printf("%d",tear1.age);
// 修改第一名老师的名字为"dingchuyuan"
tear1.name = "dingchuyuan"; // 错误的修改方式
strcpy(tear1.name, "dingchuyuan");
printf("%s\n",tear1.name);
修改或输出结构体时,成员变量需要结构体名加"."加变量名才能用
举例 tear1.name = "zhangsan" 这样写才能修改
3 结构体内存占用空间
1 结构体成员变量,储存是从上至下,从第一开始储存
2 在内存中,储存成员变量时,规则是: 个数据类型的倍数储存,如果被占用,向下延伸
3 计算结构体成员的空间,总和数 = 成员变量中最大字节数的最小倍数
4 结构体在函数中的运用
结构体运用在函数中需要写在.h的声明文件中,其它和函数没有太大区别
举例
A 声明结构体
#import <Foundation/Foundation.h>
// 使用声明函数
typedef struct teacher{
char name[20];
int age;
float score;
}Teacher;
// 打印所有老师信息
void showInfoOfTeachers(Teacher array[],int count);
B 实现(定义)函数
#import "Teacher.h"
//输出所有老师信息
void showInfoOfTeachers(Teacher array[],int count){
printf("老师信息:\n");
for (int i = 0; i < count; i++) {
printf("%-20s %-2d %.2f\n",array[i].name,array[i].age,array[i].score);
}
}
C调用函数在main函数里
Teacher tea[4] = {
{"wangke",25,90},
{"sunning",40,89},
{"xulaoshi",50,78},
{"wangcuiling",35,91}
showOfTeachers(tea, 4);