c语言中static、external、const关键字理解

static关键字主要有三个作用:
(1)函数体内,static修饰的变量作用范围为该函数体,不同于auto变量(函数体中没有static修饰的变量或有auto修饰的变量),该变量的内存只被分配一次,因此,该变量的值在下次使用到时仍维持上次的值。
(2)在模块内的static全局变量可以被模块内所有的函数访问,但不能被模块外其他函数访问。
(3)在模块内的static函数只可被该模块内的其他函数调用,这个函数的使用范围被限制在声明它的模块内。

const关键字作用:
(1)使用const关键字可以阻止一个变量被改变。在定义该变量时,通常需要对其进行初始化,因为以后没有机会去改变它。
(2)对于指针,可以指定指针本身为const,也可以指定指针所指向的数据为const,或二者同时指定为const。
(3)在一个函数声明中,const可以修饰形参,表明它是一个输入参数,在函数内部不能改变其值。

const修饰的变量是只读变量;定义const变量时,必须要对该变量初始化;const限定的对象通常是在运行时不能被赋值的对象,因此const限定的对象的值并不是一个真正的常量,不能用作数组的维度。

const 相对于 #define 的优点:
(1)const修饰的只读变量具有特定的数据类型,而宏没有数据类型。编译器可以对前者进行类型安全检查,而对后者只进行字符替换。
(2)某些集成化调试工具可以对const变量进行调试,但不能对宏常量进行调试。
注意: const type var :const 限定var不可改变
例如:
typedef char * p_str;
char str[4] = “123”;
const char * p1 = str; // type为char,const限定 *p1不可改变,但p1是可变的
const p_str p2 = str; // type为p_str(char *),const限定 p2不可改变

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值