c 初始化结构体

在C语言中,结构体是一种复合数据类型,它可以包含多个不同类型的成员,初始化结构体就是为结构体的成员赋予初始值,结构体的初始化可以在声明结构体变量时进行,也可以在声明结构体变量后进行,下面将详细介绍如何在C语言中初始化结构体。

c 初始化结构体
(图片来源网络,侵删)

1、声明并初始化结构体变量

在声明结构体变量的同时,可以为其成员赋予初始值,这种初始化方式要求所有成员按照声明顺序依次赋值,示例代码如下:

#include <stdio.h>
// 定义一个结构体类型
struct Student {
    int id;
    char name[20];
    float score;
};
int main() {
    // 声明并初始化结构体变量
    struct Student stu = {1, "张三", 90.5};
    // 访问结构体成员并输出
    printf("学号:%d
", stu.id);
    printf("姓名:%s
", stu.name);
    printf("成绩:%.2f
", stu.score);
    return 0;
}

2、声明结构体变量后初始化

在声明结构体变量后,可以单独为其成员赋值,这种初始化方式要求使用结构体指针或结构体数组,示例代码如下:

#include <stdio.h>
#include <string.h>
// 定义一个结构体类型
struct Student {
    int id;
    char name[20];
    float score;
};
int main() {
    // 声明结构体变量并初始化部分成员(不推荐)
    struct Student stu;
    stu.id = 1; // 错误!不能这样赋值,需要使用指针或数组
    strcpy(stu.name, "张三"); // 正确!可以使用字符串函数赋值
    stu.score = 90.5; // 正确!可以直接赋值
    // 访问结构体成员并输出
    printf("学号:%d
", stu.id);
    printf("姓名:%s
", stu.name);
    printf("成绩:%.2f
", stu.score);
    return 0;
}

3、使用结构体指针和数组初始化结构体变量

为了方便地为结构体成员赋值,可以使用结构体指针和数组,示例代码如下:

#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <time.h>
// 定义一个结构体类型
struct Student {
    int id;
    char name[20];
    float score;
};
int main() {
    // 声明结构体指针和数组,并为其成员赋值(推荐)
    struct Student *stu_arr = (struct Student *)malloc(3 * sizeof(struct Student)); // 分配内存空间,大小为3个结构体的大小
    for (int i = 0; i < 3; i++) { // 遍历数组,为每个元素赋值
        stu_arr[i].id = i + 1; // 正确!可以直接赋值,使用指针或数组都可以
        strcpy(stu_arr[i].name, "学生" + std::to_string(i + 1)); // 正确!可以使用字符串函数赋值,使用指针或数组都可以
        stu_arr[i].score = (i + 1) * 10; // 正确!可以直接赋值,使用指针或数组都可以
    }
    // 访问结构体成员并输出(使用指针)
    for (int i = 0; i < 3; i++) { // 遍历数组,访问每个元素的成员
        printf("学号:%d, ", stu_arr[i].id); // 正确!使用指针访问成员,注意不要加星号(*)表示解引用操作符,否则会报错!(因为这里不需要解引用)
        printf("姓名:%s, ", stu_arr[i].name); // 正确!使用指针访问成员,注意不要加星号(*)表示解引用操作符,否则会报错!(因为这里不需要解引用)
        printf("成绩:%.2f, ", stu_arr[i].score); // 正确!使用指针访问成员,注意不要加星号(*)表示解引用操作符,否则会报错!(因为这里不需要解引用)
        printf(""); // 换行,美化输出结果(可选)
    }
    free(stu_arr); // 释放内存空间(可选)
    getchar(); // 等待用户按键(可选)返回操作系统(可选)





























																																							






















																						*/
<class="hljskeyword">void</class> initStudent(<struct Student* student) { /*...*/ }*/
class="hljspreprocessor">#include <stdio.h></class><br/><br/> struct Student {<br/>&nbsp;&nbsp;&nbsp;&nbsp;int id;<br/>&nbsp;&nbsp;&nbsp;&nbsp;char name[20];<br/>&nbsp;&nbsp;&nbsp;&nbsp;float score;<br/><br/>};<br/><br/> int main() {<br/>&nbsp;&nbsp;&nbsp;&nbsp;struct Student student1 = {1, "张三", 90.5};<br/>&nbsp;&nbsp;&nbsp;&nbsp;struct Student student2 = {2, "李四", 85.0};<br/>&nbsp;&nbsp;&nbsp;&nbsp;struct Student student3 = {3, "王五", 78.0};<br/>&nbsp;&nbsp;&nbsp;&nbsp;/* ... */<br/>}<br/><br/>上述代码展示了如何初始化一个结构体数组,并为每个结构体的成员赋值,这种方式可以使代码更简洁、易读。

原创文章,作者:酷盾叔,如若转载,请注明出处:https://www.kdun.com/ask/366356.html

本网站发布或转载的文章及图片均来自网络,其原创性以及文中表达的观点和判断不代表本网站。如有问题,请联系客服处理。

(0)
酷盾叔订阅
上一篇 2024-03-22 07:02
下一篇 2024-03-22 07:03

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注

产品购买 QQ咨询 微信咨询 SEO优化
分享本页
返回顶部
云产品限时秒杀。精选云产品高防服务器,20M大带宽限量抢购 >>点击进入