|
知识路径: > 嵌入式系统软件基础知识 > 嵌入式系统程序设计 > 嵌入式程序设计语言 > 嵌入式C/C++程序设计要求 > C程序设计基础 >
|
被考次数:5次
被考频率:中频率
总体答错率:41%  
知识难度系数:
|
由 软考在线 用户真实做题大数据统计生成
|
考试要求:掌握
相关知识点:55个
|
|
|
|
在编写C程序时,一般都会把一个代码行数多的大程序分为若干个子程序,函数就是C程序中的子程序。因此,函数是一个功能模块,用来完成特定的任务。
|
|
|
标准库函数是已经定义并随着编译系统发布的、可供用户调用的函数,例如printf、scanf等;用户自定义函数是根据需要来定义的函数。
|
|
|
|
|
|
函数调用时有可能传递了错误参数,外界的强干扰可能将传递的参数修改掉,因此在执行函数主体前,需要先确定传进来的参数是否合法。
|
|
|
|
|
|
函数调用由函数名和函数调用运算符“(,)”组成,“(,)”内有0个或多个逗号分隔的参数(称为实参)。每个实参是一个变量或表达式,且实参的个数与类型要与被调用函数定义时的参数(称为形参)个数和类型匹配。当被调函数执行时,首先计算实参表达式,并将结果值传送给形参,然后执行函数体,返回值被传送到调用函数。如果函数调用后有返回值,函数调用可以用在表达式中,而无返回值的函数调用常常作为一个单独的语句使用。调用一个函数之前必须对被调用函数进行声明。
|
|
|
C程序中的参数传递方式为值传递(地址也是一种值)。函数在被调用以前,形参变量并不占内存单元,当函数被调用时,才为形参变量分配存储单元,并将相应的实参变量的值复制到形参变量单元中。所以,被调用函数在执行过程修改形参变量的值并不影响实参变量的值。
|
|
|
当数组作为函数参数时,调用函数中的实参数组只是传送该数组在内存中的首地址,即调用函数通知被调函数在内存中的什么地方找到该数组。数组参数并不指定数组元素的个数,除传送数组名外,调用函数还必须将数组的元素个数通知给被调用函数。所以,有数组参数的函数原型的一般形式为:
|
|
|
|
函数参数的引用传递不同于值传递。值传递是把实参的值复制到形参,实参和形参占用不同的存储单元,形参若改变值,不会影响到实参。而引用传递本质上是将实参的地址传递给形参。以数组作为函数参数传递时,是引用传递方式,即把实参数组在内存中的首地址传给了形参,避免了复制每一个数组元素,从而可以节省内存空间和运行时间。在被调用函数中,如果改变了形参数组中元素的值,那么在调用函数中,实参数组对应元素的值也会发生相应的改变。
|
|
|
|
如果一个函数调用另一个函数,在调用函数中必须对被调用函数进行声明。函数声明的一般形式如下:
|
|
|
|
C程序中,函数原型用于声明函数,下面是函数声明的例子:
|
|
|
|
可以将一些函数的声明集中放在头文件中,然后再用“#include”将头文件包含在程序文件中,也可以放在程序文件的开头,而把函数的定义放在程序文件后面的某个地方。C程序是从main函数开始执行的,而main函数在程序文件中的位置并没有特别的要求。
|
|
|
|
递归函数是指函数直接调用自己或通过一系列调用语句间接调用自己,是一种描述问题和解决问题的常用方法。
|
|
|
递归过程的特点是“先逐步深入,然后再逐步返回”,它有两个基本要素:边界条件和递归模式,边界条件确定递归何时终止,也称为递归出口;递归模式表示大问题是如何分解为小问题的,也称为递归体。
|
|
|