目录
一、函数
1.定义
2.函数的声明
3.函数的参数和返回值
二、参数和指针
1.形参和实参
2.传值和传址
3.传数组
4.可变参数
一、函数
1.定义
类型名 函数名(参数列表)
{
函数体
}
2.函数的声明
所谓声明(Declaration),就是告诉编译器我要使用这个函数,你现在没有找到它的定义不要紧,请不要报错,稍后我会把定义补上。
代码举例:
#includevoid print_C();//函数的声明 //函数的定义 void print_C() { printf(" ###### n"); printf("## ## n"); printf("## n"); printf("## n"); printf("## n"); printf("## ## n"); printf(" ###### n"); } int main() { print_C();//函数的调用 return 0; }
运行结果:
3.函数的参数和返回值
- 有时候,函数需要接收用户传入的数据,就需要使用到函数的参数。根据需求,函数的参数可以有多个,类型也可以各不相同。而函数的返回值通常的反馈函数的计算结果,也可以用来表示函数的执行结果。
代码实战1:编写一个函数sum,由用户输入参数 n,计算 1 + 2 + 3 + ... +(n-1)+ n 的结果并返回。
代码如下:
#includeint sum(int n); int sum(int n) { int result = 0; do { result += n; }while(n-- > 0); return result; } int main() { int n,result; printf("请输入n的值:"); scanf("%d", &n); printf("1+2+3+...+(n-1)+n的结果是:%dn",sum(n)); return 0; }
运行结果:
代码实战2:编写一个函数max,接收两个整型参数,并返回它们中的较大的值。
代码如下:
#includeint max(int,int); int max(int x,int y) { if(x > y) return x; else return y; } int main() { int a,b,c; printf("请输入两个整数:"); scanf("%d%d",&a,&b); c = max(a,b); printf("它们中的较大值是:%dn",c); return 0; }
运行结果:
二、参数和指针
1.形参和实参
- 形参:形式参数;实参:实际参数。
- 形参和实参用于数据传输。当函数发生调用时,实参的值会传递给形参,且传输具有单向性。
- 形参变量只在函数的内部有效。
2.传值和传址
- 形参:形式参数;实参:实际参数。
- 形参和实参用于数据传输。当函数发生调用时,实参的值会传递给形参,且传输具有单向性。
- 形参变量只在函数的内部有效。
2.传值和传址
不使用指针时:
代码举例:
#includevoid swap(int x,int y); void swap(int x,int y) { int temp; printf("In swap,互换前:x = %d, y = %dn",x,y); temp = x; x = y; y = temp; printf("In swap,互换后:x = %d, y = %dn",x,y); } int main() { int x = 3,y = 5; printf("In main,互换前:x = %d, y = %dn",x,y); swap(x,y); printf("In main,互换后:x = %d, y = %dn",x,y); return 0; }
运行结果:
使用指针后:
代码举例:
#includevoid swap(int *x,int *y); void swap(int *x,int *y) { int temp; printf("In swap,互换前:x = %d, y = %dn",*x,*y); temp = *x; *x = *y; *y = temp; printf("In swap,互换后:x = %d, y = %dn",*x,*y); } int main() { int x = 3,y = 5; printf("In main,互换前:x = %d, y = %dn",x,y); swap(&x,&y); printf("In main,互换后:x = %d, y = %dn",x,y); return 0; }
运行结果:
3.传数组
代码举例:
#includevoid get_array(int b[10]); void get_array(int b[10]) { printf("sizeof b: %dn",sizeof(b)); } int main() { int a[10] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 0}; printf("sizeof a: %dn",sizeof(a)); get_array(a); return 0; }
运行结果:
4.可变参数
#include
-va_list
-va_start
-va_arg
-va_end
代码举例:
#include#include int sum(int n, ...); int sum(int n, ...) { int i,sum = 0; va_list vap; va_start(vap,n); for(i = 0;i < n; i++) { sum += va_arg(vap,int); } va_end(vap);//关闭参数列表 return sum; } int main() { int result; result = sum(3, 1, 2, 3); printf("result = %dn",result); result = sum(5, 1, 2, 3, 4, 5); printf("result = %dn",result); result = sum(6, 3, 1, 2, 4, 99, 100); printf("result = %dn",result); return 0; }
运行结果: