存储类型与作用域

一个变量,不仅有数据类型,还有存储类型


数据类型包括整形、长整形、单精度浮点型、双精度浮点型、各种字符型、指针型、结构型和自定义类型等。


存储类型:分为静态存储动态存储两大类。

动态存储:包括自动变量(auto)寄存器变量(register)

静态存储:包括静态变量(static)外部变量(extern)


1st 静态变量

定义格式:

static 数据类型 变量名列表;


特点:

1、分配内存的时间:在变量定义时就进行存储单元的分配。

(静态变量在编译时,完成对定义时的被赋初始值这一操作。也就是说,二次调用函数式时,不会再次定义也不会再次赋予该变量初始值。)

2、释放内存时间:从分配开始,一直保持到整个程序结束后才释放存储单元。

(函数调用结束时若程序尚未终止,也不释放。)

3、作用域:只在该函数内。

   如果将静态变量定义成全局变量,那么作用是一定是该文件。其他文件绝对不能使用该变量。

4、如果定义时没有赋初值,则给一个默认值零。

(int 是0;char 是'\0';float是0.0)


使用建议:

占用的内存不能及时释放,所以尽量少用。


2nd 外部变量(亦称全局变量)

格式定义:

数据类型 变量名列表;

声明格式:

extern 数据类型 变量名列表;


特点:

1、能被其他文件调用;

2、在函数外定义,在文件开头定义就不需要在使用前声明,如果在函数与函数之间定义,则需要在main()中声明。

3、其他文件使用时,也要在文件头声明。


3rd内部函数&外部函数

内部函数

定义:只能被本文件调用的函数;

定义格式:static 类型标识符 函数名(形参表)

例如, static int kakaka(int a)
用处:在多人合作编写程序时,不同文件之间可以避免形成意料意外的干扰。例如,两个文件中使用了相同名称的不同函数也没有问题。

外部函数

定义:能被其他文件调用的函数

定义格式:

extern 类型标识符 函数名(形参表)

或者

类型标识符 函数名(形参表)

声明格式:

extern 类型标识符 函数名(形参表)

可见,一般没有前缀的函数都是外部函数。

外部函数在其他源文件中只有声明(声明不一定要在文件头,在函数内部也可以)就可以使用。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值