浅析extern、static、const

extern

  C和C++中用extern关键字修饰变量或函数,说明该变量或函数是全局性的。extern声明的外部变量和函数告诉编译器,该变量和函数的声明和定义不在同一文件中,而要在其他文件中查找定义。

  变量在被extern声明时并不对其分配有效空间,而是在定义时分配空间。

extern与“C”连用

  这是在C++中的使用方法,比如:extern "C"+函数声明,则告诉编译器按照C语言的函数命名规则去编译后面的函数,而不是C++的函数命名规则。其实C语言与C++的函数命名规则是不一样的。

static

static关键字是C,C++共有的。 被static修饰的变量(函数)具有了静态属性,称他们为静态变量(函数)。具体用法有三种:

1.用static声明静态局部变量。

2.用static声明静态外部变量或函数。

3.用static声明静态数据成员或成员函数。

  其中第三点是C++中所特有的,因为C语言中没有类的概念也就没有数据成员和成员函数。

一、静态局部变量

  在函数内部用static声明的变量为静态局部变量,普通类型的变量是被分配到栈中存储,而静态类型的变量是被分配到静态区存储。被分配到静态区的变量在函数调用结束后,它的值和存储单元不被系统自动释放而是保留原值,在下一次函数调用时保留上次函数调用后的值。等改程序执行完后再由系统清除。

int Test()
{
	static int c = 1;
	c++;
	return c;
}
int main()
{
	printf("%d\n", Test());
	printf("%d\n", Test());  //每次调用完成后值保留
	system("pause");
	return 0;
}
总结

1.静态局部变量在静态存储区内分配存储单元。

2.对静态局部变量是在编译时赋初值的,即只赋初值一次,在程序运行时它已有初值。

3.在定义静态局部变量时如果没有赋初值,则系统给该变量默认赋值为0。

4.声明在本函数内部的静态局部变量不可以被其他函数调用。

二、静态外部变量

  在函数外部用static修饰的变量或者函数它的作用域被限制在本文件范围内࿰

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值