C 语言易忘点笔记(四)

我的主力博客:半亩方塘


函数与程序结构


1、如果函数不需要返回值,则应该用 void 定义函数的返回值类型,同时 return 语句后不再需要任何表达式

2、对函数接口加以注释说明

/* 函数功能: 实现...功能
   函数参数: 参数1,表示...
              参数2,表示...
   函数返回值: ...
 */  

3、printf 和 scanf 是采用 变长变量表 定义的函数,所以变量的个数不固定

4、局部变量在定义时不会自动初始化,除非程序员指定初值

5、全局变量在定义时会自动初始化为 0,在定义点之前或者在其他文件中引用时,应该进行如下声明:

extern 类型名 变量名;  

不推荐使用全局变量,因为谁都可以改写全局变量,所以很难确定谁改写了它

6、变量的存储类型指的是数据在内存中存储的方式,即编译器为变量分配内存的方式,它决定变量的生存期

  • 动态存储
    根据需要 临时 分配存储空间,离开即释放(形参、自动变量、函数调用的现场等)
  • 静态存储
    在程序 运行期间 分配 固定 的存储空间不释放(全局变量、静态变量)

7、自动变量:进入语句块自动申请内存,退出时自动释放内存。标准定义格式为:

auto 类型名 变量名;  

缺省的存储类型,不初始化时,值是不确定的

8、一个函数的内部变量在函数退出后失效,再次进入函数,变量值重新初始化,把此变量定义为 static,则变量的值可以保存到下次进入函数

static int i;  

这种变量称为静态变量。
静态变量和全局变量都是静态存储类型
+ 自动初始化为 0 + 从静态存储区分配,生存期为整个程序运行期间 + 作用域不同

9、使用频率比较高的变量声明为寄存器变量(register),可以使程序更小、执行速度更快

  • register 类型名 变量名;
  • register int i;

现代编译器有能力自动把普通变量优化为寄存器变量,并且可以忽略用户的指定,所以无需特别声明变量为register

10、几个有关联的函数需要使用全局变量时,全部变量应和访问全部变量的函数放在单独的文件中,与其他文件分别编译,并且将该全局变量声明为 static(静态全局变量)
尽量少用静态局部变量,以避免函数具有“记忆”功能

11、模块和链接
将一个程序分解成若干个模块,分别放在几个源文件中,形成一个项目,然后对每一个源文件分别单独进行编译,再将它们的目标代码连同标准函数库中的函数链接在一起,形成可执行文件,模块之间通过互相调用函数和共享全部变量联系起来,头文件是联系的纽带,头文件里对全局变量的声明要加上 extern 关键字,用以说明该变量为外部变量

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值