你该逆袭了
一、复习函数
1、定义带形式参数的函数
void dibs(x, y, z)
char x, y, z;
void dibss(x, y) //这里,圆括号中只有参数列表,而参数的类型在后面声明。
int x;
char y;
//这是 ANSI C 之前的形式,现在已经将其废弃不用
2、声明带形式参数函数的原型
3、使用 return 从函数中返回值
#include <stdio.h>
int imin(int, int);
int main()
{
int num1 = 0;
int num2 = 0;
printf("enter a pair of integers (q to quit):\n");
while (scanf("%d %d", &num1, &num2) == 2)
{
printf("the lesser of %d and %d is %d.\n",
num1, num2, imin(num1, num2));
printf("enter a pair of integers (q to quit):\n");
}
printf("bye\n");
return 0;
}
int imin(int n, int m)
{
int min = 0;
if (n < m)
min = n;
else
min = m;
return min;
}
(1)、返回值不仅可以赋给变量,也可以被用作表达式的一部分。
answer = 2 * imin(z, zstar) + 25;
printf("%d\n", imin(-32 + answer, LIMIT));
(2)、返回值不一定是变量的值,也可以是任意表达式的值。
imin(int n, int m)
{
return (n < m) ? n : m;
}
(3)、如果函数返回值的类型与函数声明的类型不匹配怎样?
(4)、return 用来终止函数并把控制返回给主调函数的下一条语句。
return; 的作用
4、函数类型
声明函数时必须声明函数的类型。带返回值的函数类型应该与其返回值类型相同,而没有返回值的函数应声明为 void。
(1)函数声明既可以在主调函数外面,也可以放在主调函数里面。
二、ANSI C 函数原型
1、无参数和未指定参数
2、函数原型的优点
三、递归
结束递归 是使用递归的难点,因为如果递归代码中没有终止递归的条件测试部分,一个调用自己的函数会无限递归。
1、演示递归
如果函数使用%p转换说明打印地址,如果你的系统不支持这种格式,请使用 %u 或者 %lu 代替 %p。
#include <stdio.h>
void digui(int n);
int main()
{
digui(1);
return 0;
}
void digui(int m)
{
printf("%d 的地址是 %p\n"