C语言笔记04--结构体

本文介绍了C语言中结构体的定义,包括结构体内可以包含各种数据类型,以及结构体自身类型的指针变量。文章讲解了如何访问结构体内的元素,并重点讨论了结构体的初始化,推荐使用C++风格的构造函数进行初始化,以简化赋值操作。同时提醒在使用构造函数时注意参数对应,避免错误。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

结构体定义:结构体里面能定义除自己本身之外的任何数据类型,虽然不能定义自己本身,但能定义自身类型的指针变量。如:

struct node
{
    node n;      // error 结构体内不能定义自己本身
    node *next;  // 可以定义自身类型的指针变量
}

访问结构体内元素:

struct node
{
    int x;
    int info[20];
    node *next;
}n1, *n2;

//普通变量访问结构体元素方法('.')
n1.x;
n1.info;
n1.next;


//指针变量访问结构体元素方法('.'或'->')
(*n2).x;
(*n2).info;
(*n2).next;

n2->x;
n2->info;
n2->next;


结构体初始化:

// C语言语法,逐个元素初始化,易理解,缺点是结构体内变量多时赋值麻烦
scanf("%d, %s", &n1.x, n1.info);

 

#include"stdio.h"
//C++语法,利用构造函数赋初值
struct studentInfo
    {
        int id;
        char gender;
        //不初始化就能定义结构体变量
        studentInfo(){}
        //初始化id和gender
        studentInfo(int _id, char _gender)
        {
            id = _id;
            gender = _gender;
        }
        //构造函数的另一种形式(作用与上一构造函数相同)
        //studentInfo(int _id, char _gender): id(_id), gender(_gender){}
    }stu[10];

int main()
{
    studentInfo stu1;  //若没有构造函数 studentInfo(){} 则此处会报错
    stu1.id=100;
    stu1.gender='F';
    for(int i=0;i<10;i++)
    {
        stu[i] = studentInfo(i, 'M');  //利用构造函数 studentInfo(int _id, char _gender){} 初始化
    }
    for(int i=0;i<10;i++)
    {
        printf("student_%d: id:%d, gender:%c\n", i, stu[i].id, stu[i].gender);
    }
    printf("student_100: id:%d, gender:%c\n", stu1.id, stu1.gender);
    return 0;
}

小结:对结构体变量进行初始化时,一般采用C++的语法,利用构造函数对结构体进行初始化,这会使赋值变得更为简洁,方便。构造函数不需要写返回类型,且函数名与结构体相同,构造函数可以有多个,在使用构造函数时,要保证构造函数里的参数与定义的构造函数参数个数对等,否则可能出现错误。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值