东北大学2007年研究生考题中,计算机专业C语言部分主要涉及了C语言的基础知识、函数定义与调用、结构体的使用、内存管理等。下面详细阐述其中的知识点:
1. 函数返回值的修改及自增操作:在C语言中,可以通过引用传递参数(使用指针),在函数内部对参数进行修改,从而影响到实参的值。在给定的例子中,函数`int f(int *a)`接收一个指向整数的指针,函数体内通过自增操作`(*a)++`修改了传入的整数值。在`main`函数中通过调用此函数并传入变量地址,达到了累加的效果。
2. 函数参数传递与排序算法:在第二个例子中,提供了两个`f`函数的定义,一个用于简单二元运算,另一个是一个递归排序函数,使用了经典的分治思想进行递归排序。展示了在C语言中对数组进行操作并排序的方法。通过数组名作为首元素地址传递给函数,然后在函数内部进行元素交换。
3. 多维数组与字符串操作:题目通过一个二维字符数组(矩阵)`char *p[2][3]`演示了如何通过指针遍历和访问字符串中的字符。包括如何通过多层指针访问特定位置的字符,展示了数组与指针的紧密关系。
4. 结构体的定义、嵌套与动态内存分配:例子中`struct a`展示了结构体的定义与使用,包括结构体的嵌套和指针的使用。通过`malloc`函数动态分配内存给字符指针,演示了如何在C语言中动态管理内存,以及`strcpy`函数的使用。
5. 函数参数的传递、条件运算符以及输入输出:给定的`big`函数演示了如何在函数内部通过条件运算符选择两个值的较大者,并通过指针参数返回结果。同时,通过`scanf`函数接收用户输入的值,并通过`printf`函数输出。
6. 字符串遍历输出:通过一个简单的for循环演示了如何遍历一个字符串并逐字符输出。
7. 指针数组与字符串数组:展示了如何声明和使用指针数组以及字符串数组,并通过索引访问数组中的元素。
8. 函数内部的复合赋值和递增操作:在函数内部通过复合赋值操作符`+=`和递增操作符`++`修改变量的值,并将其影响反映到函数调用者上。
9. 内存释放:在使用动态分配的内存后,通过`free`函数释放内存资源,避免内存泄漏。
10. 函数的嵌套调用:在给定的代码中,不同函数的嵌套调用展示了函数之间相互调用的关系和参数传递的方式。
11. 条件运算符:`?:`条件运算符用于在表达式中根据条件计算并返回不同的值。
12. 基本输入输出:演示了标准输入输出函数`scanf`和`printf`的使用,以及字符串的复制函数`strcpy`的使用。
13. 字符串字面量的使用:通过直接声明字符串字面量(如`char str[] = "Helloworld!";`)来创建并初始化字符数组。
14. 结构体的灵活运用:通过结构体的嵌套使用,可以构建复杂的数据结构,更贴近于现实世界问题中的数据组织。
以上知识点涵盖了C语言编程中常见和重要的概念,是计算机专业研究生入学考试中重要的考察内容。考生需要熟悉这些概念,并能够熟练运用这些知识解决实际问题。