C语言基础->初识结构体(一):先知道怎么简单定义和使用吧

前言

  • 在C语言中,数据类型有int,long int,long long int,float,double,char,shart等多种类型,用于存储不同的类型的数据,那么,如果我们要存储许多整数,如:1,2,3,4,5,6,7,8,9,10呢?
  • 很多同学会想到用数组啊,是的没错,用数组很方便
  • 但是,如果是存储整数1,2,3,4,和字符a,b,c以及字符串"hello word"呢?
  • 很明显,这时候无法用数组了,因为数组只能存储相同类型的数据,这时候,结构体就诞生了

结构体的定义

  • 在C语言中,为了方便存储不同的数据类型,我们通过结构体来存储,结构体,即由一系列具有相同类型不同类型的数据构成的数据集合,也叫结构
  • 上述是描述如果你还不是很清楚,那就看看下面翻译吧:
  • 结构体,就是一种数据类型,不同的是,int,float等原始的数据类型只能存储相应类型的数据,而结构体能同时存储所有不同的以及相同的类型的数据。
  • 还不够理解?那就看看代码吧
  • 没有使用结构体之前,int 类型跟char 类型得分开存放
#include <stdio.h>
int main(void)
{
	int a=4; //整型变量a的值为4
	char name="hello"; //字符串name里面存放了"hello word"
	return 0}
  • 使用结构体后,int 类型和char 类型统一存放在结构体中
#include <stdio.h>

struct fun //声明结构体fun
{
	//将数据存放入结构体
	int a; 
	char name[20];
};
int main(void)
{
	struct fun k={4,"hello word"}; //给结构体赋值
	printf("a=%d\nname=%s\n",k.a,k.name); //输出结果为
									      //a=4
										  //name=hello word
	return 0;
}

如何去定义和使用一个结构体(粗略了解标准方式)

定义结构体

  • 定义:(在main函数之前定义)
struct (结构体名称)
{
	//要存放的数据
};//此处分号不可缺
int main(void)
{
	return 0;
}
  • 举例:定义一个名为fun的结构体,用来存放小明的身高,名字
struct fun
{
	int height;
	char name[8];
};
int main(void)
{
	return 0;
}

在main函数使用一个结构体

  • 使用(以上述小明的例子为例,身高为185):
#include <stdio.h>

struct fun
{
	int height;
	char name[8];
};
int main(void)
{
    struct fun k={185,"小明"}; //定义结构体类型k(同int a类似),,位置一一对应,185对应height,"小明"对应name[8]以此类推
	printf("height=%d\nname=%s\n",k.height,k.name);//输出时用变量名.结构体中的数据变量名的形式格式化输出
	return 0;
}
  • 运行结果:
    在这里插入图片描述

进阶(结构体的使用和定义)

  • 上述讲解的结构体定义和使用只是一种常用的方法,以下的方法同样也能实现对结构体的定义和使用
  1. 标准方式
  2. 不环保方式
  3. 最不喜欢的方式
    下面我们用小明的性别:男,身高185,名字为例子讲解这三种方式

标准方式(结构体类型的声明与赋值分开)

#include <stdio.h>
//声明:
struct fun
{
	int height; //身高
	char xingbie[4]; //性别
	char name[8]; //名字
};
int main(void)
{
 //赋值:
 	struct fun k={185,"男","小明"};
 	printf("身高(height)=%d\n性别(xingbie)=%s\n名字(name)=%s\n",k.height,k.xingbie,k.name);
	return 0;
}
  • 运行结果:
    在这里插入图片描述

不环保方式(结构体的声明和赋值不分开)

#include <stdio.h>
//声明结构体
struct fun
{	
	int height; //身高
	char xingbie[4]; //性别
	char name[8]; //名字
}k={185,"男","小明"};//赋值,因为在结构体中直接赋值,因此后续调用时无法通过主函数修改赋值,因而形象称之为不环保(只能使用已经写好的数据)方式
int main(void)
{
	printf("身高(height)=%d\n性别(xingbie)=%s\n名字(name)=%s\n",k.height,k.xingbie,k.name);
	return 0;
}
  • 运行结果:
    在这里插入图片描述

最不喜欢的方式

#include <stdio.h>
//跟不环保方式相似,声明跟赋值不分开,但是声明时不定义结构体名称,不方便记忆(当结构体不止一个时,没有名称会很麻烦),成为最不喜欢的方式
struct
{
	int height;
	char xingbie[4];
	char name[8];
} k={185,"男","小明"};
int main(void)
{
	printf("身高(height)=%d\n性别(xingbie)=%s\n名字(name)=%s\n",k.height,k.xingbie,k.name);
	return 0;
}
  • 运行结果:
    在这里插入图片描述
    下一期就学学更加细节的东西,下次见~
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值