结构体笔记

结构体笔记
1.结构体:其实也是一种数据类型,但是是一种复杂的数据类型,把一些基本类型数据组合在一起形成的一个新的复合数据类型

2.定义结构体的形式:
第一种:(比较推荐)

struct student1
	{
          int age;
		  float score;
		  char sex;
		  };

第二种:前面定义了结构体的名字,最后面又定义了结构体变量

struct student2
	{
		  int age;
		  float score;
		  char sex;
		  };st2

第三种:没有结构体的名字

struct 
	{
		  int age;
		  float score;
		  char sex;
		  };

3.如何使用结构体变量:
赋值和初始化
1定义的同时可以整体赋值
2如果定义完之后,只能单个的赋初值

#include "pch.h"
#include <stdio.h>

struct student1
{
	int age;
	float score;
	char sex;
};


int main()
{
	struct student1 st={ 80, 66.6, 'F' }; //定义的同时可以整体赋值
	struct student1 st2; //单独定义,自己的小错误,老是忘记写结构体的名字
	st2.age = 10;
	st2.score = 88;
	st2.sex = 'F';


}

4.如何取出结构体变量中的每一个成员
1.结构体变量名.成员名
2.指针变量的方式: 指针名->成员名


#include "pch.h"
#include <stdio.h>

//这只是定义了一个新的数据类型,并没有定义变量
struct student1
{
	int age;
	float score;
	char sex;
};


int main()
{
	struct student1 st = { 80, 66.6, 'F' }; //定义的同时可以整体赋值
	//struct student1 st2; //单独定义,自己的小错误,老是忘记写结构体的名字
	//st2.age = 10; //
	//st2.score = 88;
	//st2.sex = 'F';

	// 定义方式
	st.age = 80;// 第一种方式

	struct student1* pst = &st; // 第二种指针定义法(更常用)

	pst->age = 80; //pst->age在计算机内部会被转化成(*pst).age,没有为什么,这就是->的含义,这是一种硬性规定。
	               //所以pst->age等价于(*pst).age,也等价于st.age
	               //pst->age的含义: pst所指向的那个结构体变量中的age成员。(重要)
	st.age = 66.6f;//66.6在c语言中默认是double类型,如果希望是float类型,则需要在数字后面加f或者F
	return 0;

}

5.指针变量和结构体

#include "pch.h"
#include <stdio.h>

//定义函数之前要先声明,刚才没声明,一直显示找不到标识符,注意!!!!!
void InputStudent(struct student1 * pstu);
void OutputStudent(struct student1 ss);

struct student1
{
	int age;
	float score;
	char sex;
};  ///最后的这个分号不能省略


int main()
{
	struct student1 st;

	InputStudent(&st);//对结构体变量输入,必须发送st的地址
	printf("%d %d\n", st.age, st.score);//对结构体的输出,可以发送st的地址也可以直接发送st的内容,但为了减少内存耗费,也为了提高执行速度,推荐发送地址
	OutputStudent(st);
	return 0;

}

void InputStudent(struct student1 * pstu) {

	(*pstu).age = 16;
	pstu->score = 66.6f;
	pstu->sex = 'F';
}

void OutputStudent(struct student1 ss) {

	printf("%d %d\n", ss.age, ss.score);

}

6.结构体嵌套结构体

//结构体中的成员可以是另一个结构体
//例如:每个老师辅导一个学员,一个老师的结构体中,记录一个学生的结构体

#include "pch.h"
#include <iostream>
#include <string>
using namespace std;

struct student {

	string name;
	int age;
	int score;

};


struct teacher {

	int id;
	string name;
	struct  student stu;
	
};



int main()
{
	teacher t;
	t.name = "nn";
	t.stu.name = "oo";//嵌套
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值