函数知识学习
函数概念
函数:一段程序代码可以重复被使用
函数是C语言中最小功能单位,利用函数可以实现模块化程序设计
C程序是由一个主函数以及若干个功能函数构成;函数的类型是函数返回值的类型。从函数形式上可分为有参和无参函数
从用户角度看函数可分为库函数(标准函数)和自定义函数
函数调用
主调函数使用被调函数功能
调用形式:函数名(实参表)
调用方法:
(1)语句的形式:函数名(实参表)
(2)函数调用作为表达式的运算分量
(3)函数调用结果作为另一个函数的参数
y=pow( pow (aj). k);
函数调用可以实现嵌套调用
注:不允许函数定义嵌套
函数间数据传递
有俩种形式
1.值传递:函数调用时,将实参或实参表达式的值单向传递给形参“单向”传递
实参和形参必须是类型相同,个数相等,一一对应。
2 地址传递:函数调用时,将数据的存储地址作为参数传递给形参(数组名做函数参数)
形参与实参占用同样的存储单元,“双向”传递,实参和形参必须是地址常量或变量
函数返回值与return语句
函数的返回值也称函数值,返回的不是函数本身,而是一个值
函数可以没有返回值,这种函数一般定义为void类型
一个函数可以有多个return语句,return语句可以起到改变语句顺序的作用,无返回的函数也可以使用return,当不需要返回值值可以省去
当return返回值类型与函数类型不同时,以函数定义类型为准
递归
递归调用∶一个函数直接或间接地调用了它本身,就称为函数的递归调用,简称递归。
递归问题的解决:从最简单的情况开始考虑,可以转化为数学公式的转化,确定边界条件
变量篇
编译预处理
1.1 函数定义–作业
1.C语言是由(A)构成。
A 主程序和子程序
B主函数和子函数
C一个主函数数和若干功能函数
D主函数和子程序
2.以下说法中正确的是( )
3以下对C语言函数的有关描述中,正确的是 ©
A调用函数时,只能把实参的值传送给形参,形参的值不能传送给实参
B C函数既可以嵌套定义又可以递归调用
C 函数必须有返回值,否则不能使用函数
D C程序中有调用关系的所有函数必须放在同一个源程序文件中
4.C语言程序中,如果变量做函数参数,则当函数调用时( )
5一个函数返回值的类型是由( )决定的
6 在C语言的函数中,下列正确的说法是( )
1.4 函数间参数传递–作业
1 若函数的形参为一维数组,则下列说法中正确的是(B )
A 调用函数时的对应实参必为数组名
B 形参数组可以不指定大小
C 形参数组的元素个数必须等于实参数组的元素个数
D 形参数组的元素个数必须多于实参数组的元素个数
2 若调用一个函数,且此函数中没有若 return语句,则正确的说法是( )
3 在函数的说明和定义时若没有指出函数的类型,则( )
4 下面叙述中正确的是( )
5 C语言允许函数返回值类型缺省定义,此时该函数隐含的返回值类型是( )
一般情况都是Int
函数递归调用–作业
1 如果有个递归函数是求 246*……*(2n) 的积,则递归的公式和条件可以表达为( )
注:看n==1时,f(1)=2,故选A
2 一段楼梯有N阶,可以一次上1阶,也可以一次上2阶,用递归函数调用实现,计算多少种走法。则递归公式和边界条件是( )
注:看边界条件可得出答案 故选B
边界条件当n=1 f[1]=1,当n =2 f[2]=2
3 在下列结论中,有一个是错误的,它是 ( B)
A C语言允许函数的递归调用
B 有些递归程序是不能用非递归算法实现的
C C语言不允许在函数定义中再定义函数
D 递归函数就是函数中可以定义其他函数
3.1 变量存储属性–作业
c为局部静态变量
第一次1+1+4
第二次1+1+5
do while 和for(k<3) 都只执行俩次
3.2 编译预处理–作业
1+2+1+2*3=10
4.1 指针的定义、初始化和引用–作业
A正确为p2=&*p1 也等价于p2=p1
变量的指针,其含义是指该变量的___地址_____
4.2 指针与数组–作业
注:
(A) x[3]// x[3]=3 数组从0开始,3其实是第四个
(B) p1 = x + 3, *p1++ //先执行p1=x+3,也就是指向x[3],因为p1定义成指针.*p1++ 这时候先执行再加,这表达式仍然是3
© p1 = x + 2, *(p1++) //p=x+2 ,x数组的地址加2,也就是指向x[2],x=2,这时候p++同时也是先执行后加,所以取出x[2]的值,所以等于2
(D) p1 = x + 2, ++p1//同样,p1指向x[2],但++是先加再执行取值,所以++p指向x[3],取出来的值就是3
注:见名知意/观察发现返回末地址减首地址+1
6.1指针与函数–作业
6.2指针与指针–作业
7.1 结构的概念–作业
7.2 结构数组–作业
2+4=6;
1*2=2
7.3 结构指针–作业
7.4 结构与函数–作业
7.5 联合–作业
10.1 C语言知识总结–作业