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
9 S' h8 t' C* g0 ]7 k. {9 e
; z2 c, b$ Z5 t5 K. d/ U" B
avqprokhbgx64087474932.png
# a% X8 ?9 ^8 z; q
/ _* N6 h) v' G) `6 I! h5 s" l' D+ P
qzz0ofa1ssu64087475033.png
|