目录
前言
本篇文章是初学者对static和#define的大致理解
一、关键字static是什么?
在C语言中: static是用来修饰变量和函数的 1. 修饰局部变量-称为静态局部变量 2. 修饰全局变量-称为静态全局变量 3. 修饰函数-称为静态函数
二、关键字static的作用
1.static修饰局部变量。
未修饰前代码如图:
打印出的结果是10个2;
修饰后代码如图:
打印后的结果是2-11,说明以下几点:
函数中局部变量:
声明周期延长:该变量不随函数结束而结束
初始化:只在第一次调用该函数时进行初始化
记忆性:后序调用时,该变量使用前一次函数调用完成之后保存的值
存储位置:不会存储在栈上,放在数据段
2.static修饰全局变量
未修饰代码如下(示例):一个源文件里面的全局变量可以跨文件使用
修饰后的全局变量没有外部链接属性只有内部链接属性,所以即使声明后也不能跨文件使用
总结如下
全局变量
改变该变量的链接属性,让该变量具有文件作用域,即只能在当前文件中使用
3.static修饰函数
与上述修饰全局变量一样,static修饰函数的时候,函数本来也是具有外部链接属性的,被static修饰的时候,就变成了内部链接属性,这个函数只能在自己的源文件中使用了,不能在其它文件中使用,给我们一种改变了作用域的感觉。
static修饰函数
改变该函数的链接属性,让该函数具有文件作用域,即只能在当前文件中使用
三、什么是#define
#define 命令是 C 语言中的一个宏定义命令 ,它用来将一个标识符定义为一个字符串 , 该标识符被称为宏名, 被定义的字符串称为替换文本。 该命令有两种格式:一种是简单的宏定义, 另一种是带参数的宏定义。