2011 12-14 记录
1.函数的概念
View Code
#include<stdio.h>
void add(int a,int b);
void main(){
add(10,20);
}
void add(int a,int b){
printf("%d+%d=%d",a,b,a+b);
}
上述是无返回值类型的函数
#include<stdio.h>
int add(int a,int b);
void main(){
int K=add(10,20);
}
int add(int a,int b){
int c=a+b;
return c;
}
上述是有返回值类型的函数
函数有声明和定义:
声明是告诉编译器有这样个函数。
定义是告诉编译器去执行这样个函数,去执行。
关于函数参数的传递有两种方式:1.称之为值传递。例如上述例子。因为函数在内存中也是占内存空间的,其地址是系统自动分配,调用完后,就释放掉了。
这属于动态的分配。其形参是局部变量,局部变量自声明处到函数结束,生命期就终止了。
2.称之为址传递,传递的是指针,也就是地址。例如
#include<stdio.h>
void Func(int *Pointer);
void main(){
int a = 3;
Func(&a);
}
void Func(int *Pointer){
*Pointer += 1;
}
指定函数形参默认值的注意:1.如果已经在函数声明处给出了形参默认值,就不必再在定义处再次进行一个指定。
2.函数形参默认值的指定必须从右到左。
3.函数形参对应的默认值必须从左到右,依次匹配。
#include<stdio.h>
void add(int a = 10,int b = 20,int c=10);
void main(){
add();
}
void add(int a =10,int b =20,int c=10){
printf("%d\t%d\t%d",a,b,c)
}
这是错误的。
#include<stdio.h>
void add(int a,int b=11,int c=12);
void main(){
add(10,11,12);
}
void add(int a,int b,int c){
printf("%d\t%d\t%d",a,b,c);
}
这样从左到右是的匹配