结构体类型的创建

结构体类型的创建

#include "stdafx.h"

#if 0
一、有名结构体的俩种定义方式:
(1)定义类型的同时,完成了变量的定义
//struct Student 相当于创建了类型,相当于int
struct Student
{
	char name[100];
	char sex;
	int age;
	float score;
}stu; //既然 struct Student为类型则 stu为变量

(2)先有类型,再声明/定义变量
struct Student
{
	char name[100];
	char sex;
	int age;
	float score;
}
struct Student s;
//优点:一次定义,多处使用,会带来新的命名(提高复杂度)



二、无名结构体
(1)定义类型的同时,完成了变量的定义
struct 
{
	char name[100];
	char sex;
	int age;
	float score;
}stu;
//优点:无名结构体不引入新的类型(降低复杂度)



三、别名结构体
(1)定义结构体类型的别名
typedef struct Student  //加上student方便以后追溯但可以省略
{
	char name[100];
	char sex;
	int age;
	float score;
}STU; //此时的STU为结构体类型的别名,而不为变量

#endif


int _tmain(int argc, _TCHAR* argv[])
{
	//printf("%s\n", s.name);
	//printf("%s\n", s.sex);

	return 0;
}


在C语言中,结构体是一种由基本数据类型构成的、并用一个标识符来命名的各种变量的组合,且结构中可以使用不同的数据类型。定义结构体类型有多种方式,以下详细介绍: #### 方式一:直接定义结构体变量 这种方式在定义结构体的同时就定义了结构体变量,一般格式为: ```c struct 结构名 { 类型 变量名; 类型 变量名; // ... } 结构变量; ``` 示例代码如下: ```c struct Person { char name[20]; int age; float height; } p1, p2; ``` 在上述代码中,定义了一个名为`Person`的结构体类型,同时定义了两个该结构体类型的变量`p1`和`p2`。 #### 方式二:先声明结构体类型,再定义结构体变量 先声明结构体类型,之后可以在需要的时候定义该类型结构体变量。 ```c struct 结构名 { 类型 变量名; 类型 变量名; // ... }; // 后续定义结构体变量 struct 结构名 结构变量; ``` 示例代码: ```c struct Book { char title[50]; char author[30]; float price; }; // 定义结构体变量 struct Book book1, book2; ``` 这里先声明了`Book`结构体类型,然后定义了两个`Book`类型的变量`book1`和`book2`。 #### 方式三:使用`typedef`重命名结构体类型 使用`typedef`可以为结构体类型创建一个新的类型名,后续使用新类型名来定义变量会更简洁。 ```c typedef struct 结构名 { 类型 变量名; 类型 变量名; // ... } 新类型名; // 使用新类型名定义结构体变量 新类型名 结构变量; ``` 示例代码: ```c typedef struct Student { char id[10]; char name[20]; int score; } StudentType; // 使用新类型名定义结构体变量 StudentType s1, s2; ``` 此代码使用`typedef`为`struct Student`结构体类型创建了新类型名`StudentType`,然后用`StudentType`定义了两个结构体变量`s1`和`s2`。 #### 方式四:定义结构体指针类型 可以在定义结构体的同时定义结构体指针类型,也可以先定义结构体再定义指针类型。 ```c // 方式一:定义结构体指针类型的同时重命名 typedef struct Node { int data; struct Node* next; } *linklist; // 方式二:先定义结构体,再重命名结构体指针 struct Node { int data; struct Node* next; }; typedef struct Node* linklist; ``` 上述代码展示了两种定义结构体指针类型的方式,定义后可以使用`linklist`来定义结构体指针变量。 ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值