结构体的定义不方法区别

定义结构变量的一般格式为:

struct 结构名

{

类型 变量名;

类型 变量名;

...

} 结构变量;

结构名是结构的标识符不是变量名。

另一种常用格式为:

typedef struct 结构名

{

类型 变量名;

类型 变量名;

...

} 结构别名;


C语言中, typedef 的作用是给数据类型起一个新的名字。
例如:
typedef unsigned long long int ull_int;
以后需要声明 unsigned long long int 时,
可以直接用 ull_int 声明



struct 的语法比较复杂,我们一一举例。
例一:
struct{
char a;
int b;
} x;
这里,创建了一个变量,包含两个成员,
一个字符,一个整数。




例二:
struct STUDENT{
char name;
int age;
};
这里,创建了一个标签(tag),
为成员列表提供了一个STUDENT的名字。

以后就可以通过 struct STUDENT x; 来声明变量




接下来是 typedef 与 struct 的结合使用
例三:
typedef struct{
char name;
int age;
}STUDENT;
这里的作用和例二基本一致,
STUDENT现在是一个数据类型的名字。

以后声明可以直接写为 STUDENT x;



例四:
typedef struct NODE{
int data;
struct NODE* next;
}node;
这是创建链表节点的一种常见写法,可以分为两步:
第一步
struct NODE{
int data;
struct NODE* next;
};
创建了一个叫NODE的结构类型,

第二步 typedef NODE node;
把 NODE 这种数据类型命名为 node


值得注意的是
在创建链表时,
typedef struct NODE{
int data;
struct NODE* next;
}node;
创建指针使用的是 struct NODE* next;
在之后的创建、插入、删除、查找函数,以及主函数中,
声明指针统一用的是 node* pointer;
 

### 三级标题:结构体的声明与定义 在 C 语言中,结构体是一种用户自定义的数据类型,允许将多个同类型的变量组合在一起作为一个逻辑单元。结构体的声明使用 `struct` 关键字,并通过“结构标签”标识该类型[^2]。基本语法如下: ```c struct tag { member_type1 member_name1; member_type2 member_name2; ... } variable_list; ``` 其中 `tag` 是结构体的标签名称,`member_typeN` 和 `member_nameN` 分别是成员的类型和名称,最后的 `variable_list` 是可选的变量定义部分。 例如,可以定义一个表示学生信息的结构体如下: ```c struct Student { char name[50]; int age; float gpa; }; ``` 此声明创建了一个名为 `Student` 的结构体标签,包含三个成员变量:姓名、年龄和平均绩点[^3]。 ### 三级标题:结构体变量的定义与使用 在结构体声明之后,可以通过结构体标签定义变量。例如: ```c struct Student student1, student2; ``` 这定义了两个 `Student` 类型的变量 `student1` 和 `student2`,每个变量都包含相同的成员字段[^2]。 此外,可以在声明结构体的同时定义变量,如下所示: ```c struct Point { int x; int y; } point1, point2; ``` 这样仅声明了 `Point` 结构体类型,还同时定义了 `point1` 和 `point2` 两个变量[^3]。 ### 三级标题:结构体的前向声明与完全类型 在某些情况下,可能需要对结构体进行前向声明(forward declaration),特别是在涉及指针或函数参数时。例如: ```c struct Node; // 前向声明 struct Node* createNode(int data); ``` 在这种情况下,`struct Node` 被视为一种完全类型(incomplete type),仅能用于定义指向该类型的指针,或者声明使用该类型作为形参或返回类型的函数[^4]。 ### 三级标题:结构体的类型别名定义 为了简化结构体变量的定义,可以使用 `typedef` 为结构体定义一个新的类型名。例如: ```c typedef struct { int width; int height; } Rectangle; ``` 此时 `Rectangle` 成为该匿名结构体的类型别名,可以直接用它定义变量: ```c Rectangle rect1, rect2; ``` 这种方式避免了每次定义变量时都需要加上 `struct` 关键字,提高了代码的可读性[^2]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值