函数与程序结构【重学C之四】

C语言程序就是由一个个的函数的组成的,而且一般来说是由一个个小的函数组成的,而不是少量较大的函数组成。将函数分下为重用提供了更多的可能,并且让排错的过程思路更清晰。C语言一些在声明函数是声明参数类型,单不是强制的,并且即使函数声明的参数类型和实际定义的不一样函数也是不会重载的(当然C语言中没有重载的概念)。这里如果函数声明的参数类型和实际定义的不一致,应该是会报错。C语言的作用域问题也是一个非常关键的问题,C语言要求每个外部对象只能有一个定义。自动数字和结构都可以进行初始化。这篇博客会以函数,作用域,预处理为重点说明这部分的内容。

函数
最简单的函数是形如

dummy() {}

这个函数什么都不做,在程序中可以使用这一的函数先把程序的框架定好,在稍后再来补充内容。注意如果函数定义中省略了返回值类型,则默认的返回值类型为int。所有上述函数的返回值其实是int。
函数之间的通信可以通过参数和函数的返回值以及外部变量进行。如果某个函数从一个地方返回时有返回值,而从另一个地方返回没有返回值,这样的函数是不违法的,但是可能是有bug的。有此我们可知函数是有确定返回的。

外部变量
C语言程序可以看成是由一系列外部对象构成的,这里把函数也看成是外部变量。外部变量就是定义在函数之外的变量,可以在多个函数中使用。这一点和内部变量是对立的,内部变量只能在定义的函数内使用。在函数的作用域之外是没有意义的,也就是访问不到的。C语言不予许在一个函数中定义另一个函数,因此函数本身是外部的。自动变量只能在函数内部使用,自动变量就是函数的局部变量。是依附函数存在的,函数调用结束时,自动变量也会自动销毁。而外部变量生存期是整个程序的生存期,不互调的函数共享数据可以通过外部变量来实现。在不进行下是初始化的情况下,外部变量和静态变量都将被初始化为0,而寄存器变量和自动变量的初始值没有定义,也即是说在不对寄存器变量和自动变量进行初始化的情况下,其中的值是任意的,无意义值。

静态变量
用static描述的变量是静态变量,可以用于函数和变量。当static用于外部对象时,可以达到影藏外部对象的目的。static是一种只能在某个特定函数中使用但一直占据存储空间的变量。

寄存器变量
此选项用于优化目的不是强制的类型,毕竟CPU的寄存器数目有限。寄存器类型通过register修饰,用于建议编译器将变量保存在寄存器中。

C预处理器

#include "文件名"
#include <文件名>

include声明的行都将被文件名指定的文件内容替代。
宏替换和条件包含,后面补充下。这个。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值