C语言中结构体基本知识

时间:2021-09-29 01:51:09

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);