千锋教育-做有情怀、有良心、有品质的职业教育机构

手机站
千锋教育

千锋学习站 | 随时随地免费学

千锋教育

扫一扫进入千锋手机站

领取全套视频
千锋教育

关注千锋学习站小程序
随时随地免费学习课程

当前位置:首页  >  技术干货  > struct用法详解

struct用法详解

来源:千锋教育
发布人:xqq
时间: 2023-11-20 23:27:02 1700494022

一、定义结构体

struct是C语言中的一种复合数据类型,用于将不同类型的数据组织在一起形成一个新的数据类型。结构体定义的基本语法如下:

struct 结构体名{
    数据类型1 成员变量名1;
    数据类型2 成员变量名2;
    ……
};

在定义结构体时,需要指定结构体的名称和每个成员变量的名称和数据类型。举个例子:

struct Student {
    char name[20];
    int age;
    char gender;
};

这个示例定义了一个名为Student的结构体,包含了三个成员变量:name、age、gender。name是一个长度为20的字符数组,age是一个整型,gender是一个字符型。这样一来,我们就可以定义一个名为stu的变量,这个变量就是Student类型的了:

struct Student stu;

二、结构体初始化

结构体定义后,可以单独为每个成员变量赋值,也可以使用结构体初始化方式为整个结构体赋值。

使用结构体初始化的方式需要按照顺序,为每个成员变量提供一个初始值,使用花括号括起来。如果不想为结构体的所有成员变量赋值,可以使用“{}”或“{0}”来表示剩余成员变量的默认值。示例代码:

struct Student stu1 = {"Tom", 18, 'M'};
struct Student stu2 = {.name="Jerry", .gender='F'};
struct Student stu3 = {0};

三、引用结构体成员

访问结构体中的成员变量需要使用“.”运算符。示例代码:

struct Student stu;
strcpy(stu.name, "Michael");
stu.age = 20;
stu.gender = 'M';
printf("%s,%d,%c\n", stu.name, stu.age, stu.gender);

四、结构体作为函数参数

可以把结构体作为函数的参数传递给函数来进行操作,有两种传递方式:传值和传指针。

结构体传值:

struct Student {
    char name[20];
    int age;
};
void printStudent(struct Student stu){
    printf("%s,%d\n",stu.name,stu.age);
}
int main(){
    struct Student stu = {"Tom", 18};
    printStudent(stu); //Tom,18
    return 0;
}

结构体传指针:

void changeStudent(struct Student* stu, char* name, int age){
    strcpy(stu->name, name);
    stu->age = age;
}
int main(){
    struct Student stu = {"Tom", 18};
    changeStudent(&stu, "Jim", 20);
    printf("%s,%d\n",stu.name,stu.age); //Jim,20
    return 0;
}

五、结构体数组

可以使用结构体数组来一次定义多个结构体变量。示例代码:

struct Student{
    char name[20];
    int age;
    char gender;
};
int main(){
    struct Student stu[3] = {
        {"Tom",18,'M'},
        {"Jerry",17,'F'},
        {"Mike",19,'M'}
    };
    return 0;
}

六、结构体嵌套

可以将一个结构体嵌套在另一个结构体中。示例代码:

struct Date{
    int year;
    int month;
    int day;
};
struct Student{
    char name[20];
    int age;
    struct Date birthday;
};
int main(){
    struct Student stu = {"Tom", 18, {2000,9,1}};
    printf("%s,%d,%d-%d-%d\n",stu.name,stu.age,stu.birthday.year,stu.birthday.month,stu.birthday.day);
    return 0;
}

七、typedef定义结构体别名

可以使用typedef关键字为结构体定义一个别名。示例代码:

typedef struct Customer{
    char name[20];
    int age;
}Custom;
int main(){
    Custom cus = {.name="Tom",.age=18};
    printf("%s,%d\n",cus.name,cus.age);
    return 0;
}

声明:本站稿件版权均属千锋教育所有,未经许可不得擅自转载。
10年以上业内强师集结,手把手带你蜕变精英
请您保持通讯畅通,专属学习老师24小时内将与您1V1沟通
免费领取
今日已有369人领取成功
刘同学 138****2860 刚刚成功领取
王同学 131****2015 刚刚成功领取
张同学 133****4652 刚刚成功领取
李同学 135****8607 刚刚成功领取
杨同学 132****5667 刚刚成功领取
岳同学 134****6652 刚刚成功领取
梁同学 157****2950 刚刚成功领取
刘同学 189****1015 刚刚成功领取
张同学 155****4678 刚刚成功领取
邹同学 139****2907 刚刚成功领取
董同学 138****2867 刚刚成功领取
周同学 136****3602 刚刚成功领取
相关推荐HOT