C或C++中结构体的使用

C或C++中结构体的使用

    • 1.结构体的作用,以及什么是结构体
    • 2.结构体的定义
      • ①结构体得定义到main函数外边
      • ②定义结构体时可以直接定义改类型的变量
      • ③定义时给结构体改名字
    • 3.结构体的使用
      • ①先定义一个结构体变量
      • ②然后这个变量里边的东西赋初值
    • 4.结构体里边有指向它自身的指针

1.结构体的作用,以及什么是结构体

结构体说的好像挺让人难以琢磨,其实大家细看,就会发现它其实是一些数据类型的集合,一个结构体里边可以有很多不同的数据类型,和普通的数组(只能包含同一种数据类型的数据)什么的不一样。它就是一个特殊的数据类型,看下边的这个例子

struct Student
{
	//成员列表
	string name;
	int age;
	int score;
};  //这个分号可不能丢

定义了一个结构体,它里边包含了3个数据类型(分别是学生姓名,年龄,考试分数;这些数据都属于同一个学生);它其实就像我们平时看到的表单一样,一个这种类型的数据占一行,然后它可以有好多列,每一列代表的含义不同;而在表单中,普通的数据类型每一行就只有一个数据,表单就只有一列

2.结构体的定义

①结构体得定义到main函数外边

#include
using namespace std;

struct Student
{
	//成员列表
	string name;
	int age;
	int score;
};  //这个分号可不能丢

int main()
{
	//使用结构体数据类型
	struct Student s1;  //写成Student s1也行
	//int x;
	s1.name = "zhangsan";
	s1.age = 20;
	s1.score = 100;
	//cout << "年龄:" << s1.name << endl;
	
	system("pause");
	return 0;
}

可以根据上边的代码看出,它的变量的定义的方法和普通的一样,都是数据类型名字+变量名;
结构体数据类型的名字就是定义时大括号上边的那些(eg:struct Student)
注意:c++中定义结构体数据类型变量时,可以把struct去掉,直接用后边的名字,就像上边那个struct Student s1;可以直接写成Student s1;

②定义结构体时可以直接定义改类型的变量

struct Student
{
	//成员列表
	string name;
	int age;
	int score;
}s1,s2,t[5];  //这个分号可不能丢

int main()
{
	s1.name = "zhangsan";
	s1.age = 20;
	s1.score = 100;
	//cout << "年龄:" << s1.name << endl;
	system("pause");
	return 0;
}

可以看到,在定义结构体的同时,可以直接在大括号后边定义变量,并且可以定义多个,甚至还可以定义一个数组,用逗号隔开就可以。
然后在main函数中可以直接使用该变量,不用再定义。
但是我们一般不这么用,大家都是用一个就定义一个,而且定义结构体的人可能不是你自己,这个变量被定义了,可能别人并不知道,它就会一直都不被使用,多少有点浪费空间。

③定义时给结构体改名字

C语言中定义一个结构体变量时,不是都得加上struct么,我们嫌弃它写起来太麻烦,复杂,所以想要给结构体改个名字,写的短小精悍一些。

typedef struct Student
{
	//成员列表
	string name;
	int age;
	int score;
}Student,*Stu;  //这种的就可以改变结构体的名字啦,Stu可代表结构体指针

如上边的代码所示,在struct Student之前加上一个typedef,然后在大括号后边跟一个你喜欢的名字,就可以成功为它改名啦!
大家可能注意到了,大括号后边不仅有改完的名字,还有一个带星号的东西。
你可能已经想到了,那个带星号的东西,就是这个结构体类型的指针,不仅可以改变量名,还可以改指针,从此以后Stu就可以代表Student*啦!

3.结构体的使用

int main()
{
	//使用结构体数据类型
	struct Student s1;  //写成Student s1也行
	//int x;
	s1.name = "zhangsan";
	s1.age = 20;
	s1.score = 100;
	//cout << "年龄:" << s1.name << endl;
	
	system("pause");
	return 0;
}

①先定义一个结构体变量

②然后这个变量里边的东西赋初值

访问结构体里边的内容,需要用.来访问

4.结构体里边有指向它自身的指针

struct Student
{
	//成员列表
	string name;
	int age;
	int score;
	struct Student *deskmate;
}; 

这就是我们常用的链表啦!
大家可能会疑惑,这个结构体还没定义完(大括号还没结束),里边怎么就可以用它这种结构的指针呢?
嘻嘻,指针所占的内存是一定的,所以系统可以自己清楚的知道该给这种类型(指该结构体)的数据分配多少内存,所以它里边用到自己类型的指针也无妨。
系统只是一个分配内存的工具罢了,它只要知道该分多少就行。

这块如果想用一个自己本身,就会报错。因为该结构还没定义完,系统不知道它是啥样,要给它分配多少内存。
C或C++中结构体的使用_第1张图片
看上边有红线了吧。

注意:结构体里边想要用到本身的指针,定义时类型名得写全,把大括号上边的都写上,struct+结构体名字

不懂的地方,大姐评论区留言啦!

你可能感兴趣的:(c++基础知识,指针,数据结构,c++)