椋鸟C语言笔记#15:结构体初探

萌新的学习笔记,写错了恳请斧正。


目录

结构的声明

结构体变量的定义与初始化

结构成员访问操作符

结构体直接访问

结构体间接访问


结构体是C语言中的一种特殊的数据类型,它是自定义的,可以由程序员自己定义。

结构体是一些值的集合,这些值称为成员变量。结构的每个成员可以是不同类型的变量,如:
标量、数组、指针,甚至是其他结构体。

结构的声明

struct tag
{
    member-list;
} variable-list;

其中tag是结构的名字,由我们自定义

member-list就是成员列表,用于定义结构体的成员变量

variable-list是变量列表,用于在定义结构时同时定义一个或多个变量(可以省略)

这段定义不用放在主函数里面,和定义函数一样和主函数平行放置即可

光看这些可能会感觉很抽象不能理解,那我们来看几个例子:

  • 描述学生的结构体
struct Stu
{
    char name[20];  //名字
    int age;        //年龄
    char sex[5];    //性别
    char id[10];    //学号
};
  • 描述复数的结构体
struct Complex
{
    int Re;    //实部
    int Im;    //虚部
};

结构体变量的定义与初始化

//变量的定义
struct Point
{
    int x;
    int y;
} p1;    //声明类型的同时定义变量p1     
struct Point p2;    //定义结构体变量p2 


//初始化
struct Point p3 = {10, 20};    //其中的内容按顺序与结构体成员列表一一对应

struct Stu
{
    int age;      //名字
    char name[15];//年龄
};
struct Stu s1 = {"zhangsan", 20};//初始化
struct Stu s2 = {.age=20, .name="lisi"};//指定顺序初始化


//结构体嵌套初始化
struct Node
{
    int data;
    struct Point p;
    struct Node* next;    //指针变量,暂时不要管  
} n1 = {10, {4,5}, NULL};
struct Node n2 = {20, {5, 6}, NULL};

结构成员访问操作符

结构体直接访问

结构体成员的直接访问是通过点操作符(.)访问的

点操作符接受两个操作数,用法为“结构体.成员”,如下所示:

#include <stdio.h>

struct Point
{
    int x;
    int y;
} p = {1,2};

int main()
{
    printf("x: %d y: %d\n", p.x, p.y);
    return 0;
}

通过结构成员访问操作符可以获取结构体中特定的成员

结构体间接访问

有的时候我们只能使用一个指向结构体的指针(结构体的内存地址)

那我们怎么通过这个指针来访问我们的结构体的特定成员呢?

我们可以使用“->”操作符,用法为“结构体指针->成员”,如下所示:

#include <stdio.h>

struct Point
{
    int x;
    int y;
};

int main()
{
    struct Point poi = {3, 4};
    struct Point *p = &poi;
    p->x = 10;
    p->y = 20;
    printf("x = %d y = %d\n", p->x, p->y);
    return 0;
}

更多关于结构体的内容后面再讲。


  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

椋鸟Starling

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值