- 函数的定义和声明
- 函数的声明和定义都必须描述相同的类型,但是声明可以不写参数名,定义则必须写参数名,但是他们的参数名字可以不同。
- 一个局部变量被声明为static,那么这个局部变量将只会被初始化一次,而其他的局部变量则随情况而定进行初始化
-
1 #include<iostream> 2 using namespace std; 3 int f(int ); 4 int f(int a){ 5 while(a--){ 6 static int n=0;//这个静态局部变量只能被修改一次 7 int x=0;//这个局部变量一直是在被修改 8 9 cout<<"n=="<<n++<<",x=="<<x++<<endl; 10 } 11 } 12 int main(){ 13 f(2); 14 f(3); 15 }
- 函数参数
- 数组参数:不会也不能按值传递,T[]类型的数组传递时会被转换成T*。
- 多维数组作为参数:可以利用指针的数组代替。(实际就是指向数组的指针)
- 默认参数不确定数目的参数 1.如果函数中出现不确定数目的参数,就用。。。表示
- 默认参数的类型将在函数声明时检查,默认参数一般是被放在最后的,它的后面如果出现非默认的参数,就会报错
- `int a(int a,int b=0,int c);//这个是错误的`。
- 不确定的参数就用。。。表示
- 指向函数的指针
- 用函数指针变量调用函数:可以用一个指针变量指向函数,然后调用这个指针变量去调用此函数
-
#include <stdio.h> #include <stdlib.h> int main() { int max(int,int); int (*p)(int,int);//定义P为一个指向函数的指针变量,如果*p没有括号就不是指针变量了 int a,b,c; p = max;//p指向max函数的开头 scanf("%d,%d",&a,&b); c = (*p)(a,b); printf("a=%d,b=%d,max=%d ",a,b,c); return 0; } int max(int x,int y) { int z; if(x>y) z = x; else z = y; return(z); }
-
- (1) 指向函数的指针变量的一般定义形式为:
数据类型 (*指针变量名)(函数参数列表)
这里数据类型就是函数返回值的类型
- 用函数指针变量调用函数:可以用一个指针变量指向函数,然后调用这个指针变量去调用此函数
- 总结