78 lines
		
	
	
		
			1.9 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
		
		
			
		
	
	
			78 lines
		
	
	
		
			1.9 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
| 
								 | 
							
								---
							 | 
						|||
| 
								 | 
							
								title: Structures
							 | 
						|||
| 
								 | 
							
								localeTitle: 结构
							 | 
						|||
| 
								 | 
							
								---
							 | 
						|||
| 
								 | 
							
								## C中的结构
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								### 什么是结构?
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								*   **结构**是C中的用户定义类型。它基于这样的想法,即程序员不仅要管理原始数据类型,还需要管理程序员定义的数据类型。
							 | 
						|||
| 
								 | 
							
								*   **结构** ,顾名思义,是由各种原语数据类型,如字符,整数,浮点变量,数组等等
							 | 
						|||
| 
								 | 
							
								*   **结构**还可以包含各种其他用户定义的数据类型。接下来你将学习嵌套结构。
							 | 
						|||
| 
								 | 
							
								*   **结构**构成了**_面向对象编程_**的基础,因为_类_的概念源于结构。
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								### struct关键字
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								*   `struct`关键字可以帮助我们定义用户定义的数据类型。
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								```C
							 | 
						|||
| 
								 | 
							
								struct StudentRecord 
							 | 
						|||
| 
								 | 
							
								 { 
							 | 
						|||
| 
								 | 
							
								  char Name[20]; 
							 | 
						|||
| 
								 | 
							
								  int Class; 
							 | 
						|||
| 
								 | 
							
								  char Address[30]; 
							 | 
						|||
| 
								 | 
							
								  char Phone[10]; 
							 | 
						|||
| 
								 | 
							
								 }; 
							 | 
						|||
| 
								 | 
							
								```
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								*   我们还可以使用**typedef**定义一个**结构** ,这样可以更轻松地在程序中稍后初始化一个结构。
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								```C
							 | 
						|||
| 
								 | 
							
								typedef struct StudentRecord 
							 | 
						|||
| 
								 | 
							
								 { 
							 | 
						|||
| 
								 | 
							
								  char Name[20]; 
							 | 
						|||
| 
								 | 
							
								  int Class; 
							 | 
						|||
| 
								 | 
							
								  char Address[30]; 
							 | 
						|||
| 
								 | 
							
								  char Phone[10]; 
							 | 
						|||
| 
								 | 
							
								 }Record; 
							 | 
						|||
| 
								 | 
							
								```
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								在`main()` ,用户定义的数据类型**StudentRecord**定义为:
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								```C
							 | 
						|||
| 
								 | 
							
								int main(void) 
							 | 
						|||
| 
								 | 
							
								 { 
							 | 
						|||
| 
								 | 
							
								  struct StudentRecord student1; 
							 | 
						|||
| 
								 | 
							
								 } 
							 | 
						|||
| 
								 | 
							
								```
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								使用**typedef** ,用户定义的数据类型如下所示:
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								```C
							 | 
						|||
| 
								 | 
							
								int main(void) 
							 | 
						|||
| 
								 | 
							
								 { 
							 | 
						|||
| 
								 | 
							
								  Record student1; 
							 | 
						|||
| 
								 | 
							
								 } 
							 | 
						|||
| 
								 | 
							
								```
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								要访问存储在**student1中**的数据,我们使用点( **。** )运算符来访问结构类型变量的内容。
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								```C
							 | 
						|||
| 
								 | 
							
								int main(void) 
							 | 
						|||
| 
								 | 
							
								 { 
							 | 
						|||
| 
								 | 
							
								  struct StudentRecord student1; 
							 | 
						|||
| 
								 | 
							
								  student1.Class = 10; 
							 | 
						|||
| 
								 | 
							
								  printf("Enter Name of Student\n"); 
							 | 
						|||
| 
								 | 
							
								  scanf("%s",&student1.Name); 
							 | 
						|||
| 
								 | 
							
								  printf("Enter Address of Student\n"); 
							 | 
						|||
| 
								 | 
							
								  scanf("%s",&student1.Address); 
							 | 
						|||
| 
								 | 
							
								  printf("Enter Phone Number of Student\n"); 
							 | 
						|||
| 
								 | 
							
								  scanf("%s",&student1.Phone); 
							 | 
						|||
| 
								 | 
							
								  // Printing the Data 
							 | 
						|||
| 
								 | 
							
								  printf("Name: %s \n, Class: %d \n, Address: %s \n, Phone: %s \n",student1.Name, student1.Class, student1.Address, student1.Phone); 
							 | 
						|||
| 
								 | 
							
								 } 
							 | 
						|||
| 
								 | 
							
								```
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								### 更多信息
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								https://www.tutorialspoint.com/cprogramming/c\_structures.htm
							 |