「数据结构」结构体复习

前言

  • 什么是数据结构
    数据结构(Data Structure)是指相互之间存在一种或多种特定关系的数据元素集合,数据结构由数据元素关系组成。

  • 什么是数据元素
    数据元素(Data Element)是组成数据的基本单位。

  • 什么是数据
    数据(Data)是描述客观事物的集合,可以是模拟数据,如:图像、声音等;也可以是数字数据,如:字符、数字等。

  • 结构体是数据结构在C语言中的表现形式,不同数据类型组成的组合型的数据结构

声明结构体

使用struct关键字定义结构体

struct  结构体名 //结构体类型:struct + 结构体名
{成员列表};

例如:定义一个学生类型的结构体,学生的姓名、年龄等就是结构体的成员。

struct Student
{
	char name[30];   //字符数组来存储姓名
	int age;	//学生年龄
};

结构体成员的定义和定义变量一样。

定义结构体类型变量

  1. 先声明结构体类型,再单独定义结构体变量(如定义一个学生xiaoming)
 struct Student xiaoqiang;
即:结构体类型 结构体变量名
  1. 声明结构体变量的同时,定义结构体变量
 struct Student
 {
 	char name[30];   //字符数组来存储姓名
	int age;	//学生年龄
 }xiaoqiang;

即:

struct 结构体名
{
	成员列表;
}结构体变量名;
  1. 不指定类型名定义结构体
struct
{
	char name[30];   //字符数组来存储姓名
	int age;	//学生年龄
}xiaoqiang;

即:

struct
{
	成员列表;
}结构体变量名;
  1. 使用typedef使用一个新的类型名代表结构体类型
typedef struct
{
	char name[30];   //字符数组来存储姓名
	int age;	//学生年龄
}Std;
Std xiaoqiang;	//定义一个结构体变量

效果等同

typedef struct Student
{
	char name[30];   //字符数组来存储姓名
	int age;	//学生年龄
}Std;
Std xiaoqiang;	//定义一个结构体变量

即:

typedef struct 结构体类型名(可以省略)
{
	成员列表;
}新的类型名;

定义结构体数组

struct Student
{
   char name[30];   //字符数组来存储姓名
   int age;	//学生年龄
}Std[2]={"小强",18,"小董",17};

即:

struct 结构体名
{成员列表}数组名[数组长度];

初始化:

  1. 声明结构体类型时初始化;
  2. 先声明结构体类型,再初始化。

初始结构体成员

  1. 定义结构体变量的同时初始化
struct
{
   char name[30];   //字符数组来存储姓名
   int age;	//学生年龄
}xiaoqiang={"小强",18};
  1. 引用结构体变量进行初始化(通过结构体变量名.成员名来引用结构体成员)
struct
{
	char name[30];   //字符数组来存储姓名
	int age;	//学生年龄
}xiaoqiang;
int main(){
	strcpy(xiaoqiang.name,"小强");
	xiaoqiang.age=18;
	printf("%s今年%d\n",xiaoqiang.name,xiaoqiang.age);
	return 0;
}

结构体指针

定义一个结构体指针

struct Student
{
   char name[30];   //字符数组来存储姓名
   int age;	//学生年龄
}* std;

效果等同

struct Student
{
   char name[30];   //字符数组来存储姓名
   int age;	//学生年龄
};
Student* std;

指针std指向Student结构体,引用结构体成员:

 1. (* std).成员名,如:(* std).age;
 2. std->成员名,如:std->age;

注:使用typedef定义一个新的结构体指针类型,定义结构体指针变量后,需要使用malloc函数为其分配空间,才能应用结构体中的成员。
例如:

#include<stdio.h>
#include<stdlib.h>
typedef struct
{
	int elem[10];
	int HighPower;
}Node,* NodeList;
int main()
{
	NodeList a;
	printf("%d",a->elem[0]);
	return 0;
}

NodeList 为野指针,如果不使用malloc函数为其分配空间,则会导致程序异常结束。

发布了20 篇原创文章 · 获赞 75 · 访问量 6909

猜你喜欢

转载自blog.csdn.net/weixin_42089228/article/details/103462635