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是一个霸道总裁,嘻嘻嘻)
接下来通过代码来具体讲解一下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是霸道总裁了吧?!)
此处举例了用宏实现了相加,效果和函数相加是一样的。
那么就有人问了,既然有函数,为什么要用宏呢?
当然如果需要执行很复杂的操作过程,用函数是再好不过的,但是如果很简单的操作工程用宏实现是非常简便快捷的,这就是宏的特点所在。
4.结构体
OK,那么今天的分享就到这里了,如果觉得对大家有帮助的话,那就麻烦大家点赞一键三连关注我(嘻嘻嘻)