电子产业一站式赋能平台

PCB联盟网

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

结构体与指针的关系

[复制链接]

395

主题

395

帖子

2304

积分

三级会员

Rank: 3Rank: 3

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

nc34s4k5mku64087474732.png

nc34s4k5mku64087474732.png

1 H. E- C" I, ~, \) T, Z9 w% |+ D+ O9 h+ X) A7 b, E/ u
在C语言中,结构体(Struct)是一种用户自定义的数据类型,它允许您将不同类型的数据项组合在一起,以便形成一个更复杂的数据结构。结构体可以包含多个成员变量,每个成员变量可以是不同的数据类型。而结构体指针则是指向结构体类型的指针,用于操作和访问结构体的成员。下面我们将分别详细解释结构体和结构体指针,并提供相应的示例代码。6 k& k8 O3 S: C4 H9 i9 D! J* O

4 \, F* E. B% Z! y2 q7 V- b% P1.结构体:& a7 ?2 g) x4 m# b5 j, w
结构体是一种自定义数据类型,用于将不同类型的数据组合在一起。 .定义结构体的语法格式:struct 结构体名 { 成员列表 }; 9 i* C( S( r5 {2 i: c5 p# w
  • #include
    : c$ t, D+ V: m  M. e8 G. f// 定义结构体struct Student {    char name[50];    int age;    float gpa;};
    ! D. E* ?8 L/ |' k1 Dint main() {    // 声明结构体变量    struct Student student1;( u( i6 a) F5 V* e8 G
        // 结构体变量赋值    strcpy(student1.name, "John");    student1.age = 20;    student1.gpa = 3.7;
    ; K5 U1 s$ _0 A1 ]; d, Y    // 结构体变量访问    printf("Name: %s
    1 w( D  Z- b  V3 U( q& [! c", student1.name);    printf("Age: %d) ~, r! }0 E6 ~  i/ F( G
    ", student1.age);    printf("GPA: %.2f2 i. H0 D1 E' O4 B% B/ F. g
    ", student1.gpa);' Z( q) M% s. O& ^6 a; y
        return 0;}在上述示例中,我们定义了一个名为 Student 的结构体,包含了学生的姓名、年龄和平均成绩。我们声明了一个结构体变量 student1 并对其成员进行赋值。然后,我们通过点运算符 . 访问结构体变量的成员。
    ' h1 I6 q% J: M- B0 j1 p2.结构体指针:
    % z/ f) t1 X& |5 K) U8 J结构体指针是指向结构体类型的指针变量,通过该指针可以操作和访问结构体的成员。.定义结构体指针的语法格式:struct 结构体名 *指针变量名;
  • #include
    ' ?) ~1 o- \5 y! _// 定义结构体struct Point {    int x;    int y;};7 x3 h. G, @" Q! W; `
    int main() {    // 声明结构体指针    struct Point *ptr;
    : `  o7 s/ q4 G1 F    // 动态分配内存    ptr = (struct Point*)malloc(sizeof(struct Point));& A, {7 I. r+ }2 s( x5 v
        // 结构体指针访问(使用箭头运算符 ->)    ptr->x = 10;    ptr->y = 20;
    0 j; D; V) p, ^* S5 u    // 结构体指针打印    printf("Coordinates: (%d, %d)
    + b" T% Z, _0 g" y% S% d", ptr->x, ptr->y);
    . l" X& D# |8 X6 W% t    // 释放内存    free(ptr);) T4 o. h; L1 Z5 f
        return 0;}在上述示例中,我们定义了一个名为Point 的结构体,表示一个二维坐标点。我们声明了一个结构体指针 ptr 并使用 malloc() 动态分配了结构体的内存。通过结构体指针 ptr,我们可以使用箭头运算符> 来访问和修改结构体的成员。使用结构体和结构体指针,我们可以更灵活地组织和访问复杂的数据结构。==========$ w) H+ S6 ]4 |) _
    往期回顾:琢磨了一天的CAN协议
    # z3 \4 x& v  s4 A2 |什么是Modbus协议?
    3 b2 U: c+ `8 I  W蓝桥杯付费视频更新进度通知& U- f1 ?) V' L! E, F5 n
    GD32F1硬件开发指南之复位电路个人对STM32 SysTick的总结(寄存器操作)
    9 n9 o" d: @1 n# s==========作者:吃瓜面包酱  c9 `; E$ o2 F+ P7 N
    平台:51CTO博客. Y2 H6 \1 J* T# k& g& ~8 n
    原文:点击阅读原文
    7 w5 X. G6 T6 v2 n: n" i5 v. N. e/ w. N

    3zscgf0iteg64087474832.png

    3zscgf0iteg64087474832.png
    9 S' h8 t' C* g0 ]7 k. {9 e
    ; z2 c, b$ Z5 t5 K. d/ U" B

    avqprokhbgx64087474932.png

    avqprokhbgx64087474932.png
    # a% X8 ?9 ^8 z; q
    / _* N6 h) v' G) `6 I! h5 s" l' D+ P

    qzz0ofa1ssu64087475033.png

    qzz0ofa1ssu64087475033.png
  • 回复

    使用道具 举报

    发表回复

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

    本版积分规则


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