C语言笔试重点:函数调用与参数传递

需积分: 22 1 下载量 131 浏览量 更新于2024-08-16 收藏 455KB PPT 举报
"这篇资源主要涵盖了计算机二级考试中的笔试知识点,特别是关于C语言的部分,包括函数的调用、参数传递方式、表达式计算、逻辑运算符的短路特性、指针操作、数组以及预处理指令等内容。" 在C语言中,函数是实现代码重用的重要工具。函数的调用涉及到形参和实参的概念。形参(形式参数)是在函数定义时使用的参数,它们是函数内部使用的临时变量;实参(实际参数)是在调用函数时提供的具体值,这些值被用来初始化形参。函数调用时,有两种主要的参数传递方式: 1. **传值(Pass by Value)**:在这种方式下,实参的值被复制到形参中,形参的改变不会影响到实参。这意味着在函数内部对形参的修改不会反映到调用函数的地方。 2. **传址(Pass by Reference)**:实参的地址被传递给形参,形参通过这个地址直接访问实参的内存。因此,函数内部对形参的修改会影响到调用函数的地方。在C语言中,通常通过指针来实现传址调用。 举例来说,以下代码展示了传值和传址的区别: ```c void incrementByValue(int num) { num++; // 形参num是局部变量,增加不会影响到实参 } void incrementByReference(int *ptr) { (*ptr)++; // 通过指针访问实参,实参会被修改 } int main() { int x = 10; incrementByValue(x); // x不会变 incrementByReference(&x); // x会变 return 0; } ``` 函数的返回值是函数执行完毕后返回的结果,可以通过函数调用表达式获取。例如,`int func()`表示函数返回整型值,`double getAverage(int arr[], int size)`则表示返回数组平均值的双精度浮点数。 在表达式计算方面,C语言支持多种运算符,包括算术运算符、比较运算符、逻辑运算符等。`switch`语句用于根据不同的条件执行相应的代码块,而`sizeof`运算符可以获取变量或数据类型的大小(以字节为单位)。指针是C语言的一个重要特性,它允许直接操作内存地址。变量的作用域决定了变量在何处可见和可使用,宏定义和`typedef`则提供了预处理和类型别名的功能。结构体和共用体允许我们组合多种数据类型,链表是一种动态数据结构,文件操作则涉及输入/输出。 对于题目中提到的具体例子: 1. 在第一个例子中,逻辑与运算符`&&`的短路特性使得在第一个表达式`++a<0`为假(即a不小于0)时,第二个表达式`!(b--<=0)`不会被执行,因此输出结果不受b的递减影响,答案是C,10。 2. 第二个例子中,`*p++`先访问然后递增,所以数组a[2]的值为原来a[1]的值,即6。答案是A,6。 3. 第三个例子中,`func`函数的参数传递是传值,所以`x`和`y`的递减只影响到局部变量,而`x+y`的计算发生在递减之前。同时,逗号运算符`x--,y--,x+y`的优先级是左到右,所以`r`的值为19。答案是C,19。 4. 最后一个例子的输出未给出,但显然涉及了格式化输出,可能需要根据`printf`的格式控制符来填写正确答案。 理解并掌握这些知识点对于通过计算机二级考试,尤其是C语言部分,至关重要。