1.
函数分为标准函数和用户自定义函数,函数包括函数首部和函数体(声明部分,执行部分)两部分
2.
实参变量向形参变量时是单向传递,也就是运算结果不能传回主调函数。注意指针作形参传递也一样。
3.
一个函数可以有多个return语句,执行到那一个return语句,那句起作用。如果返回值的类型和定义的函数类型不一致,那么以定义的函数类型为准。
4.
函数是自右而左的顺序求值。注意对函数的声明。
5.
定义是属于函数的功能的确立,声明是函数名字,类型,参数个数等传给编译系统。声明时只需要在定义的首部加上一个分号就可以了。编译系统不检查参数名,只检查参数类型。所以声明时形参名可以随便写,当然不能写太龌龊的东西(例如写一部小电影的数据)。被调函数在主调函数之前定义的话就不用加声明了。一般我们都在c文件的上面把用到的函数都做好声明。函数的声明只是函数的一个事先的通知给主调函数,通知给编译系统,而定义则是明确的确立函数的功能和意义。
6.
函数递归调用,在定义递归函数的使用第一条就是把函数的最低一位的初值定义好。
7.
c对形参数组大小不做检查。形参说白了就是一个指针,貌似一个数组。在函数中我们sizeof它看看起始就一个、两个、四个字节。
8.
要想通过函数带回改变量,1主调函数设置n个变量,用n个指针指向它们,在函数中改正指针所指向的值即可。2全程变量。
9.
函数的实参可以是表达式
10.
在被定义函数中,必须指定形参的类型,
11.
如果函数的return返回值和函数前面定义的不一样的话则以函数类型为准。函数类型决定函数返回类型。凡是不加函数类型说明的一律视为整型。凡不要求返回函数只的函数一般要定义为void类型
12.
调用函数时,如果是无参函数则实参列表可以没有,但是括号不可以省略。实参运用时要用逗号隔开。
13.
声明时函数的函数首部写完后加上一个分号";"注意函数声名中可以不写函数的形式参数名,例如:"float add
(float,float);"更省的情况是可以只声明函数的类型和函数的名。
14.
如果不对函数类型进行定义的话,系统自动的认为它是一个int类型的函数。
15.
如果在函数定义前以在主调函数外对函数进行了声明,则在主调函数中不用在声明他。
16.
数组名作为函数的形式参数或实际参数时,传递的是数组的首地址。
17.
函数参数中形参的改变不会影响实参的改变,调用函数过程中函数值即使改变了主调函数中实参也不改变。。。。。但是我们可以通过数组、指针等方法来实现改变。
18.
函数的声明是函数的原型,而函数的定义是函数的本身。
19.
函数本质上讲使全局的,但是我们可以使之变为内部函数(指定函数不能被其他函数调用,靠真贱!干吗这样搞?后经我姚兄反复验证,缜密推理——此处为允许其他文件定义和此处相同的函数名所用)ststic
类型
函数名(型参列表)。
20.
无参函数定义形式:
有参函数定义一般形式
空函数
类型标志符 函数名()
类型标志符 函数名 (形参1,形参2)
类型说明符 函数名()
{声明部分
{声明部分
{}
语句
语句
}
}
21.
实参可以是常量,变量,表达是。但要求这些式子必须有确定的值。如果形参是数组名的话,传递的是数组的首地址而不是数组的值。
22.
变量的传递是但向传递,即只有是参传递给形参,而不能由形参传回实参。这样的话,调用函数结束实,实参单元保留原值。
23.
函数的调用:函数名(函数实参,函数实参,……,函数实参) 函数调用可以作为一个语句,一个表达式元素,一个函数参数来调用。
24.
c
语言中不可以在一个函数中定义另一个函数,即不允许嵌套定义但是允许嵌套调用。
25.
函数的递归调用,首先采用判断结构给最低的一位赋值,用于递归结束时的最后一位的赋值。
26.
数组元素可以作为函数的实参,其用法与变量相同,数组名(或其指针变量)可以作为实参和行参,传递的是数组首地址。
27.
用数组名做函数参数时,应在函数中和主调函数中分别定义数组,而且这两种定义的类型应该一样。主调:aver=average(socre);被调用函数:float average(float
array[10])其中socre是主函数中的数组,average函数中定义的array是与sorce同一个数组,只是在函数中定义了,并且这两个数组是同一个数组,共同占用一段公共的内存地址。因为他们传递的是数组首地址。这样被调用的函数参数中的数组的值的变化就可以引起主函数中数组的值的变化,这样的是与变量不同的。形参可以不用定义字符个数。
28.
多维数组名做函数参数,在被调用函数中对形参的定义可以指定每一维的大小也可以省略第一位的大小,c不检查第一维的大小,故不论数组的第一维如何定义均可。
加载中,请稍候......