1.怎么定义一个函数?
函数定义需要有函数类型(即函数返回值类型),函数名和函数参数。
例如定义一个函数:
int fun(int a)
{
}
即该函数额类型为int型,名为fun,有一个int型的参量a。
2.函数的定义和声明有什么关系?
函数的声明就是声称一个函数的名字,只是说明一个函数的名字,不涉及函数的实现,即没有函数体。
函数的定义就是确定一个函数的意义,即让函数具有某一个功能。
在要使用一个自定义函数时,先要在使用它前写一个函数的定义,并放置在main函数的前面。如果函数的定义放在了main函数的后面,则需要在使用该函数前,写一个声明。
声明只要写函数的类型,函数名,函数参数即可,最后加一个分号。
3.关于形式参量和实际参数的问题
在函数定义中,函数的参数列表中各个参数是形式参量,在main函数调用该函数时,括号内输入的参数称为实际参数,传递到形式参量那里。
实际参数的类型必须和函数定义的形式参量的类型保持一致。
4.函数调用的过程。
1.通过函数名找到函数的入口地址,进入函数。
2.给形参分配内存空间。
3.进行数值传递(或者地址传递)。
4.执行函数体的语句。
5.返回函数值。
6.释放空间。
5.如何实现自定义函数返回多个值?
1).利用全局变量。
可以考虑把要返回的多个值定义为全局变量,当函数调用时,全局变量被更改,再把更改后的全局变量用于主函数中。
2).传递数组指针。
可以考虑把多个返回值作为数组元素定义成一个数组的形式,并使该数组的地址作为函数的形式参数,以传址方式传递数组参数。函数调用后,形参数组元素改变导致实参改变。
3).传递结构体指针。
6.什么是回调函数?
回调函数是一个通过函数指针调用的函数。将一个函数指针传递给另一个函数,当这个函数指针被用来调用它所指向的函数时,我们就说这个函数时回调函数。
7.什么是变参函数?
变参函数的一个典型例子就是printf函数。其函数原型为:int printf(const char*format,...)
它只有一个固定参数 format,其后是占位符“...”,表示后面的参数的个数不定。