大厂面试机器学习算法(4)XGBoost

linux 安装ssh

  返回  

C语言 struct()结构体定义和使用方法 代码详解 知识点全面

2021/8/20 13:30:28 浏览:

1、导言:

什么是结构体类型?结构体类型是怎么样的?在许多程序中,所用的变量大多数是互相独立、无内在联系的。比如定义了整型变量x,y,z,它们都是单独存在的变量,在内存中的地址也是互不相干的,但在实际生活和工作中,有些数据是有内在联系的,成组出现的。比如,一个学生的学号、姓名、性别、年龄、成绩、家庭地址等项,是属于同一个学生的,可以看到性别(sex)、年龄(age)、成绩( score)、地址(addr)是属于学号为20202021和名为“ 小美”的学生的。如果将num、name、sex、age、 score、addr分别定义为互相独立的简单变量,难以反映它们之间的内在联系。人们希望把这些数据组成一个组合数据,例如定义一个名为 student1的变量,在这个变量中包括学生1的学号、姓名、性别、年龄、成绩、家庭地址等项。这样,使用起来就方便多了。

numnamesexagescoreaddr
20202021小美2098深圳
针对这一问题,我们可以用一个叫做  “结构体” 的东西;
(定义)它允许建立由不同类型的数据组成的组合型的数据结构。

2、建立结构体类型:

struct student
	{
		int  num;          
		char name[10];
		char sex;
		int  age;
		float score;
		char addr[50];			
	};                 //注意:后面一定要有分号 

上面我们指定了一个结构体类型 struct student( struct是声明结构体类型时
所必须使用的关键字),它向编译系统说 : “ 我是一个“结构体类型” ,我包含num,name ,sex,age, score,adder 不同数据类型的成员。” 通过比较,这个方法和系统提供的标准类型(如int,char, float,double等)具有相似的作用,都可以用来定义变量,只不过int等类型是系统已声明的,而结构体类型是由自己根据需要在程序中指定的。

声明一个结构体类型的一般形式为:

struct + 结构体名

{成员列表};

上述的代码中,struct是结构体的关键字,student是自己起的结构体名,声明student就是结构体名。
{成员列表} 是该student结构体中所包含的“结构体成员” ,如num,name ,sex,age, score,adder ,对每个“成员”都进行了数据类型声明(int,char,float等)。

说明:结构体成员中可以包含结构体:

#include<stdio.h>

void main()
{
	struct date      // 声明一个结构体类型 struct Date
	{
		int month;
		int day;
		int year; 
	};
	struct student 
	{
		int  num;          
		char name[10];
		char sex;
		int  age;
		struct date birthday;	     //成员 birthday属于 struct Date类型
		char addr[50];	
		
			
	};        //注意:一定要有分号 
	
 }
 

意思表示这样:
在这里插入图片描述

3、定义结构体类型变量

  前面只是建立了一个结构体类型,它相当于一个模型,并没有定义变量,里面并无具体数据,系统对之也不分配存储单元。相当于设计好了图纸,但并未建成具体的房屋。为了能在程序中使用结构体类型的数据,应当定义结构体类型的变量,并在其中存放具体的数据,可以采取以下3种方法定义结构体类型变量:


  方法一:先声明结构体类型,再定义该类型的变量

struct student   student1,student2;

结构体类型名          结构体变量名     

student1:

202022小明2097广州

student2:

202023小白2096珠海


  方法二:在声明类型的同时定义变量

struct student
	{
		int  num;          
		char name[10];
		char sex;
		int  age;
		float score;
		char addr[50];			
	}student1,student2; //注意:后面一定要有分号 


  方法三:.不指定类型名而直接定义结构体类型变量( 此方法不提倡使用)

struct 
	{
		int  num;          
		char name[10];
		char sex;
		int  age;
		float score;
		char addr[50];			
	}student1,student2; 

4、结构体变量的初始化和引用

代码程序:

#include<stdio.h>

int main()
{
	struct student
	{
		long int num;
		char name[20];
		char sex[6];
		char addr[20];
		
	}student1 = {202021,"小美","woman","广州"};
	
	printf("num:%ld \nname:%s \nsex:%s \naddr: %s\n",student1.num,student1.name,student1.sex,student1.addr);
	return 0;
 } 

运行结果
在这里插入图片描述



结构体变量的赋值有下面几种方法:

1、在定义结构体变量时可以对它的成员初始化:

student1 = {202021,"小美","woman","广州"}

2、引用结构体变量中成员的值:

student1.num = 202021;
student1.name = "小美";

3、结构体内嵌结构体(成员本身又属一个结构体类型),对其赋值:

student1.birthday.month = 12;
student1.birthday.day = 6;

4、结构体变量的成员可以像普通变量一样进行各种运算:

student1.num = student2.num;
num = student1.num + student2.num;
student1.age++;

5、可以引用结构体变量成员的地址,也可以引用结构体变量的地址。

scanf("%d",&student1.num);
printf("%o",&student1);

联系我们

如果您对我们的服务有兴趣,请及时和我们联系!

服务热线:18288888888
座机:18288888888
传真:
邮箱:888888@qq.com
地址:郑州市文化路红专路93号