关键字:typedef,详解static。宏,结构体

1.常见关键字-----typedef(其实它的作用就是让你的 变量类型 变得更加 简洁易懂)

顾名思义就是,类型定义。这里理解为:类型重命名。

可以参考如下代码进行解释:

#define _CRT_SECURE_NO_WARNINGS 1 
#include <stdio.h>
typedef unsigned int A;//这里是将unsigned int变量类型重命名为"A"(特别要记住这是一段语句,末尾要加;结束)
int main()
{
	unsigned int num1 = 1;
	A num2 = 1;//此处num1和num2的值是相等的,其变量类型相同。
	printf("%d\n%d\n", num1, num2);
	return 0;
}

 2.static(静态的)static是用来修饰变量和函数的(其实static是一个霸道总裁,嘻嘻嘻

 

1. 修饰局部变量-静态局部变
2. 修饰全局变量 - 静态全局变量
3. 修饰函数 - 静态函数
附:在学习C/C++的时候,我们将内存划分了三个区域:栈区,堆区,静态区
栈区-是存放:局部变量 和 形式参数 的地方。临时作用的变量都存放在栈区。
栈区上变量的特点:进入作用域 创建,出作用域 销毁。(这里的销毁是指把之前所占用的空间还给了操作系统。并不是真正意义上的销毁。)
堆区-主要是动态内存的分配
静态区-主要是存放:全局变量 和 静态变量
静态变量 的特点是:只要创建之后,直到程序结束后才会销毁,也就是还给操作系统。

 接下来通过代码来具体讲解一下static的作用特点:

(1)static修饰局部变量:

#define _CRT_SECURE_NO_WARNINGS 1 
#include <stdio.h>
void test()
{
	int a = 5;
	a++;
	printf("%d ", a);
}

int main()
{
	int i = 0;
	while (i < 10)
	{
		test();
		i++;
	}
	return 0;
}

此代码的最终结果是打印10个6

 (这里肯定会有小伙伴会疑惑,说小杨:为什么是打印10个6呢?不是打印6~15吗?

唉,这就到了,接下来的主角登场----我们的霸道总裁:static!!!接下来就又有人问了,说,为什么他是霸道总裁呢?那么好,接下来看好他的表演。)

#define _CRT_SECURE_NO_WARNINGS 1 
#include <stdio.h>
void test()
{
	static int a = 5;
	a++;
	printf("%d ", a);
}

int main()
{
	int i = 0;
	while (i < 10)
	{
		test();
		i++;
	}
	return 0;
}

 家人们谁懂啊?!我仅仅在被调用的函数用static修饰了一下变量a。结果直接十分神奇的变成了6~15。

那么接下来解析一下这道题:因为static修饰局部变量的时候,当局部变量出其局部范围作用域的时候不会让其“销毁”。那么就顺利成章的a不断的累加下去。此例题就是static修饰局部变量的。

如果没有static修饰局部变量:那么就会像第1种情况一样,作用完之后,结果是6,。当下一次再调用这个函数的时候,还是从a=5开始,这样就会不断的创建销毁,创建销毁,最终的结果就是10个6。

(2)static修饰全局变量:

 static修饰全局变量,全局变量就有了外部链接属性。所以在其他源文件内部也可以照样使用(方法要正确)

如下图所示:

 

 由此可以看出,图一 在另一个源文件中没有加static,就可以被其他源文件调用,但是在 图二 看 来,如果前面加上了static,其内部的文件只能供自己内部使用,不能被其他文件调用。这就是static修饰 全局变量(也就是说当static修饰全局变量时,改变了这个变量的属性,使这个全局变量由外部链接变为内部链接。)所以说静态变量只能在自己的源文件内部使用,不能在其他文件中被调用,静态变量的作用域是小了的。(所以综上所述,你就说static他霸道不霸道?!呜呜呜)

3)static修饰函数:

 

 在没加static之前函数能被调用,在加了之后函数不能被调用,这和这个修饰全局变量是一样的。

(所以说为什么static是霸道总裁了吧?!)

3.#defifine 定义常量和宏

 此处举例了用宏实现了相加,效果和函数相加是一样的。

那么就有人问了,既然有函数,为什么要用宏呢?

当然如果需要执行很复杂的操作过程,用函数是再好不过的,但是如果很简单的操作工程用宏实现是非常简便快捷的,这就是宏的特点所在。

4.结构体

结构体是 C 语言中特别重要的知识点,结构体使得 C 语言有能力描述复杂类型。
比如描述学生,学生包含: 名字 + 年龄 + 性别 + 学号 这几项信息。
这里只能使用结构体来描述了。
例如:

  OK,那么今天的分享就到这里了,如果觉得对大家有帮助的话,那就麻烦大家点赞一键三连关注我(嘻嘻嘻)

 

 

评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小能软糖_

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值