电子产业一站式赋能平台

PCB联盟网

搜索
查看: 227|回复: 0
收起左侧

结构体与指针的关系

[复制链接]

397

主题

397

帖子

2463

积分

三级会员

Rank: 3Rank: 3

积分
2463
发表于 2024-1-10 21:01:00 | 显示全部楼层 |阅读模式

nc34s4k5mku64087474732.png

nc34s4k5mku64087474732.png

% |2 i% f- m6 P+ r, a) x: M- F9 ]+ {  E
在C语言中,结构体(Struct)是一种用户自定义的数据类型,它允许您将不同类型的数据项组合在一起,以便形成一个更复杂的数据结构。结构体可以包含多个成员变量,每个成员变量可以是不同的数据类型。而结构体指针则是指向结构体类型的指针,用于操作和访问结构体的成员。下面我们将分别详细解释结构体和结构体指针,并提供相应的示例代码。8 a5 x2 s1 g& h9 ^; ?
' k* H: y; v& }* F4 e
1.结构体:5 {0 D7 F. _+ o. ^
结构体是一种自定义数据类型,用于将不同类型的数据组合在一起。 .定义结构体的语法格式:struct 结构体名 { 成员列表 };
  v0 d" Z5 j1 `$ r
  • #include 7 x. x8 E! L7 |' ]( K* o, f( W
    // 定义结构体struct Student {    char name[50];    int age;    float gpa;};
    6 `( }' [9 y5 b5 |int main() {    // 声明结构体变量    struct Student student1;. D4 \+ ^% |6 f: q: a: ^
        // 结构体变量赋值    strcpy(student1.name, "John");    student1.age = 20;    student1.gpa = 3.7;
    ' l2 }) V' u8 {    // 结构体变量访问    printf("Name: %s) u, Y7 W# l6 u
    ", student1.name);    printf("Age: %d: T0 G8 n& y5 s  o6 @: S5 T+ y
    ", student1.age);    printf("GPA: %.2f/ B7 ~7 Q0 D# U) S& e0 h) v; L
    ", student1.gpa);3 q8 v6 z+ K$ W
        return 0;}在上述示例中,我们定义了一个名为 Student 的结构体,包含了学生的姓名、年龄和平均成绩。我们声明了一个结构体变量 student1 并对其成员进行赋值。然后,我们通过点运算符 . 访问结构体变量的成员。
    ; }& ~" r' w2 C0 _, j6 M+ Y) M2.结构体指针:
    2 g3 p! f9 T2 @' T结构体指针是指向结构体类型的指针变量,通过该指针可以操作和访问结构体的成员。.定义结构体指针的语法格式:struct 结构体名 *指针变量名;
  • #include
    ; s. c$ p. x$ s" c8 V+ g7 \3 p- m, V// 定义结构体struct Point {    int x;    int y;};7 _! X3 y: a1 f. J
    int main() {    // 声明结构体指针    struct Point *ptr;) q1 x! C( J3 a% x. h
        // 动态分配内存    ptr = (struct Point*)malloc(sizeof(struct Point));- W+ t6 Z9 E3 e/ f  `. B
        // 结构体指针访问(使用箭头运算符 ->)    ptr->x = 10;    ptr->y = 20;; L. ~9 L# l. ^# ^
        // 结构体指针打印    printf("Coordinates: (%d, %d)6 V. P, Z* g, c" j2 X6 x5 j
    ", ptr->x, ptr->y);) s$ x% `' A! ?3 i4 m
        // 释放内存    free(ptr);
    . Z9 q% D7 N0 j1 q# |! ]    return 0;}在上述示例中,我们定义了一个名为Point 的结构体,表示一个二维坐标点。我们声明了一个结构体指针 ptr 并使用 malloc() 动态分配了结构体的内存。通过结构体指针 ptr,我们可以使用箭头运算符> 来访问和修改结构体的成员。使用结构体和结构体指针,我们可以更灵活地组织和访问复杂的数据结构。==========! B7 z+ W. U1 p% o4 |3 U0 r
    往期回顾:琢磨了一天的CAN协议7 Z( L0 U! S7 z& Y" Z5 y+ R+ ^
    什么是Modbus协议?
    / W' G! U5 s# S蓝桥杯付费视频更新进度通知# i$ i2 e, f6 l7 L. W% T" @5 T2 i. y
    GD32F1硬件开发指南之复位电路个人对STM32 SysTick的总结(寄存器操作)
    " a3 {# ~; f+ P6 K. H8 L==========作者:吃瓜面包酱+ w  G3 T3 L3 V) G0 Y! ~" ^
    平台:51CTO博客
    + P; p+ H5 M" G  v* I原文:点击阅读原文! L  L; x# k8 k- ?
    - K# N8 Q, P# D: X2 ^9 C; u+ m

    3zscgf0iteg64087474832.png

    3zscgf0iteg64087474832.png

    $ ?0 Q# t! z3 ]& ?2 q$ B  {6 K# a2 C3 G6 E

    avqprokhbgx64087474932.png

    avqprokhbgx64087474932.png
    : j$ b; T/ Q# Q* g

    9 A  ~' t  Q$ n; V+ h, b% L2 {

    qzz0ofa1ssu64087475033.png

    qzz0ofa1ssu64087475033.png
  • 回复

    使用道具 举报

    发表回复

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则


    联系客服 关注微信 下载APP 返回顶部 返回列表