关于函数的说明:
当函数返回值为非整型时,都必须有类型定义符和函数说明语句;*********例外:指针型函数必须有函数说明,即使是整型也不例外********
函数说明语句:即在main函数中调用函数前先说明:
函数的返回类型 函数名(形参类型说明);//形参类型说明可为空
当然,如果把自定义函数定义在main()函数之前,则不需要函数说明语句,
但此法不可取。
函数的传值和传址调用
传值调用:只是实参的复制值被传递给形参,实参与形参不再有任何其他联系。
在被调用函数中发生的一切并不影响函数调用时所使用的实参。
传值调用是一种单向传递,不能将形参的值返回给实参,即只能由调用函数向被调用函数传递值的方法。
****C语言中一般都用传值调用****
传址调用:为了实现双向传递,即通过形参将被调用函数中形参的变化传递回原调用处,以改变实参的值。为了达到这个目的,通常使用传址调用。(形参必须为指针类型,实参必须使用变量的地址) main(){ void swap(); int a=10,b=20; swap(&a,&b); } void swap(int *x, int *y) { int temp=*x; *x=*y; *y=temp; } 函数与数组 数组数据在函数调用中不能采用传值调用,而是采用传值调用,因为不带任何下标的数组名是一个指向该数组第一个元素的指针。 函数与指针 1、返回指针的函数(指针型函数) 定义: 类型定义符 *函数名(参数表) { 函数体 } 指针型函数必须有函数说明,即使是整型也不例外! 说明方法: 类型定义符 *指针型函数名(); 2、指向函数的指针 与使用指向数组的起始地址的指针变量一样,使用指向函数起始地址的指针变量,也可以把函数作为实参传递给被调用函数。这是因为函数名也表示函数在内存区域的首地址,即函数被调用时的入口地址。 定义方法: 类型定义符 (*函数指针变量)(); 由于函数是语句的集合,单独语句是无意义的,所以对函数指针不能进行指针的其他有关运算。 函数指针的作用是在函数之间传递函数,他是通过传址调用实现的。