C语言结构体,超简单入门版!

本文深入浅出地介绍了C语言中的结构体和typedef关键字。通过实例解析了如何定义和使用结构体,包括结构体内存布局、成员访问,并展示了typedef如何简化类型定义。文章适合C语言初学者,旨在帮助读者更好地理解和应用结构体。

同学们好啊,我是401郭明,这篇博文我将带大家好好分析C语言结构体,帮大家在C语言方面快速打好基础,本篇博文主要针对没有C语言基础或者C语言基础不好的同学。

为了方便大家理解,我这篇文章将会讲的十分之详细,基本上我把我对于C语言的理解全部倾述于这篇博文之上,大家都知道我郭某人的梦想是当老师,所以这篇文章我会写的非常方便大家理解。并且尽可能让大家没有阅读障碍!

首先第一步嘛,我们想写一个C语言代码,我们肯定要创建一个C语言的源文件:
创建C语言源文件
上面这张图片展示了我们在DEV C++中创建一个C语言源文件。

然后我们在创建了源文件之后就是代码编写了,比如接下来我们来写个脚本,这个脚本的目的呢是在windows的shell窗口中打印hello,world这行字。

#include<stdio.h>
int main(){
	printf("你好世界");
	return 0;
}

上面这行代码我们来一一分析:

#include<stdio.h>

上面这行代码的作用是在全局的库文件中导入我们C语言的输入输出库文件。我们的C语言库文件有很多,等会我们还会介绍一种叫做:

#include<stdlib.h>

的头文件

然后导入我们的头文件之后,我们再来讲解main方法。main方法基本上是我们C语言基础中最重要的部分了,一个C语言的源文件就相当于我们有一个瓶子,然后main方法就是瓶子的瓶口,我们一切业务的实现都是要从main方法开始实现的。
main方法里面放了我们的数据和函数执行的入口,其实main方法与其说是方法,不如说其是函数更好一点。我接下来将把main方法称作main函数,记住,这很重要!

行,基本的main方法和头文件讲完之后,我们开始讲结构体了,结构体真的是个非常简单的概念,定义结构体也是非常简单的一件事,下面直接展示代码:

#include<stdio.h>
struct Node{
	int data;
	struct Node *next;
};
int main(){
	printf("hello world!");
	return 0;
}

上面的这段代码呢,告诉了我们结构体该怎么定义

struct 结构体名{
	结构体的参数1
	结构体的参数2
	......
	结构体的参数N
};

记住,结构体定义之后,他的末尾一定要加上一个分号,不然的话编译时会报错!

然后我们再来聊下什么是结构体?为什么要定义结构体?

定义一个结构体变量其实和定义一个int,float,double变量一样。如果你定义一个int(整型,我相信现在大二了整型,浮点型,双精度浮点型的概念大家都是应该要有的,如果这方面搞不懂的话可以来401咨询我)

英雄联盟ADC角色-烬

在芸芸众生中,我们每个人都有自己的一些属性,每个人都有一个或者多个属于自己的标签。就如同游戏英雄联盟中的英雄一样,一个英雄有他的血量,蓝条,攻击力。。。等等一系列属性,然后这些属性都有一个特定的数值来标识他们的强弱,比如说我现在定义一个结构体hero:

struct Hero{
	//英雄的名字
	String name;
	//英雄的血量
	double Health_value;
	//攻击力
	int aggressivity;
};

然后我们通过在main方法中创建一个英雄变量。

#include<stdio.h>
struct Hero{
	//英雄的名字
	char* name;
	//英雄的血量
	double Health_value;
	//攻击力
	int aggressivity;
};
int main(){
	//定义一个struct Hero的英雄变量烬
	struct Hero jin;
	jin.name="烬";
	jin.Health_value=470;
	jin.aggressivity=81;
	printf("烬的名字:%s\n",jin.name);
	printf("烬的生命值:%lf\n",jin.Health_value);
	printf("烬的攻击力:%d\n",jin.aggressivity);
	return 0;
}

上面的例子中,我们给烬赋值,然后进行了输出,下面是运行结果:
运行结果1

然后在上面的一个简单例子中,我们同时也展示了怎么调用结构体中的元素。上面我们使用的是点号取值,就是结构体名后面加一个点号,然后后面加上结构体中的一个参数值,就可以取出这个参数值中的数据,或者改变这个元素的值。

改变值:

jin.name="jin";

获得值:

printf("%s",jin.name);

然后研究上面的代码,我们同时也发现:

struct  Hero{
	//英雄的名字
	char* name;
	//英雄的血量
	double Health_value;
	//攻击力
	int aggressivity;
};

我们不能直接通过Hero来定义一个Hero结构体的变量,我们在定义一个Hero变量之前要先在Hero之前加一个struct

struct Hero jin;

这让我看上去觉得非常的不习惯,我现在想要直接就用Hero就创建一个变量,把struct给省略掉,接下来我们看代码实现:

#include<stdio.h>
typedef struct hero{
	//英雄的名字
	char* name;
	//英雄的血量
	double Health_value;
	//攻击力
	int aggressivity;
}Hero;
int main(){
	//定义一个struct Hero的英雄变量烬
	Hero jin;
	jin.name="烬";
	jin.Health_value=470;
	jin.aggressivity=81;
	printf("烬的名字:%s\n",jin.name);
	printf("烬的生命值:%lf\n",jin.Health_value);
	printf("烬的攻击力:%d\n",jin.aggressivity);
	return 0;
}

如果我们想要省略掉struct,就必须得要用到我们的typedef关键字,typedef的作用是重命名变量名类型,我们还可以这样:

typedef int dataType
typedef double floatType

这样我们就可以用dataType和floatType来定义新的int和double变量,就是让他们也有同样的代表性。

那么我们接下来理解同样的typedef struct hero是不是也简单了呢?

typedef struct hero{
	//英雄的名字
	char* name;
	//英雄的血量
	double Health_value;
	//攻击力
	int aggressivity;
}Hero;

好了,以上

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值