extern,static,const修饰变量的用法

本文详细介绍了C语言中extern, static, const修饰变量的作用和用法,包括它们在不同场景下的区别,以及如何影响变量的作用域、内存分配和程序优化。例如,extern用于声明全局变量,static限制变量的作用域,const用于创建只读变量,这些概念对于理解和编写高效、可靠的C程序至关重要。" 17894935,5284,EBS OAF多行表附件功能实现指南,"['EBS开发', 'OAF开发', '附件功能', '多行表']
摘要由CSDN通过智能技术生成

 首先看两道道面试题:

变量的定义与声明有啥区别?

首先:变量的定义一定也是变量的初始化,反之则不成立, 在一定的作用域中,变量的声明可以有多个,但是定义只有一个;

  -》变量在定义时分配内存空间,同时也可能赋予初值;

  -》变量在声明时不会分配内存空间,说明该变量是存在的,指出了该变量的名字和位置。其作用是声明该变量是已在程序后面定义的变量

  如: extern int i ; //声明外部变量;<=> extern i ;

  如: int i ;//定义变量;

简要说明static的用法?

NO.1 修饰函数,使得函数成为静态函数,在此static并非指存储方式,只是说明该函数的作用域只是局限于本文件;

NO.2 修饰局部变量,成为静态局部变量,存储在静态区,即使函数运行结束,静态变量的值不会被销毁,下次调用该函数时,值仍存在;

NO.3 修饰全局变量,成为静态全局变量,存储在静态区,作用域仅限于变量被定义的文件中,其他文件即使使用extern也无法调用

用关键字const修饰的只读变量与常量的区别:

1.      常量是一个静态的值,不需要分配内存,enum类型和#define(注意define不是关键字)宏声明一个常量;变量需要分配内存;

2.      const修饰的只读变量不能用来作为定义数组的维数,也不能放在case关键字后面。

           (case 后面只能是整型或字符型的常量或常量表达式

3.       常量是永远无法改变的,但是只读变量一般无法直接再次赋值,但是可以通过指针改变。

更多参考:

http://blog.sina.com.cn/liexusong1985   

第2章const只读变量与常量 【指针】

举例:有关字符串常量的疑惑

void main()
{
 
char * p;
 p
= ( char * )malloc( sizeof ( char ));
 p
= " abc " ;
 p[
1 ] = p[ 0 ];
 printf(
" %s
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值