1 .函数定义:是函数体的实现。 函数主体是调用函数时执行的代码块。
函数声明:为编译器提供有关函数的信息,包括参数的数量、每个参数的类型和返回类型。 因为函数被正确调用。
【注意】:如果调用函数时编译器看不到其声明,则假设函数返回整数值。 对于返回值不是整数的函数,在调用前声明很重要,可以避免不可预测的类型转换导致的错误。 对于没有原型的函数,传递给函数的参数会增加默认参数。 char和short类型的参数转换为int类型,浮点类型转换为双精度类型。
执行结果: 25
2 .有两种方法可以为编译器提供函数特定的信息。 第一,将函数的定义放在源文件之前。
二是提供函数原型。
3 .整数常量转换为字符常量的方法如下:
0’0=‘0’
1‘0’=‘1’
4 .递归本质说明:
例如,当给定值4267时,必须按照“4”、“2”、“6”和“7”的顺序来生成字符。
分析递归工作原理:
步骤1 :函数刚开始执行时,堆栈的内容如下:
步骤2 :执行除法运算后,堆栈内容如下:
步骤3 :接下来,if语句确定p的值不为零,并对该函数执行递归调用。 第二次调用此函数时,堆栈的内容如下:
步骤4 :在堆栈中创建新变量,并隐藏上一组变量。 它们无法访问,除非返回当前递归调用。 再次执行除法运算后,堆栈内容如下。
第五步: m的值变为42。 因为它还不为零,所以继续递归调用以创建一组变量。 执行这次调用的除法运算后,堆栈的内容如下。
步骤6 :此时,m的值还不为零,继续递归调用。 执行除法运算后,堆栈内容如下:
步骤7 :当前m的值为零,递归函数开始打印而不调用自己。 函数返回,并开始放弃堆栈上的变量值。 每次调用putchar时得到的变量m的最后一个数字,对m进行模型10的馀数运算,并加到字符常数’0’上输出结果。
输出结果: 4
步骤8 :函数返回,变量从堆栈中丢弃。 然后,使用堆栈顶部的自己的变量重新执行递归函数的上一次调用。 由于其m值为42,因此调用putchar打印的数字为2。
输出结果: 42
输出结果: 426
输出结果: 4267
要在堆栈中执行递归函数,请执行以下操作: