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
$ ?0 Q# t! z3 ]& ?2 q$ B {6 K# a2 C3 G6 E
avqprokhbgx64087474932.png
: j$ b; T/ Q# Q* g
9 A ~' t Q$ n; V+ h, b% L2 {
qzz0ofa1ssu64087475033.png
|