1

“C语言简单记”基于我以前学习过程中做过的笔记、随笔,特意整理了一下,只是简单的记录了一些比较重要的知识点,不会去深入探究,面向的是一些有语言基础的人查找阅读,还请见谅,谢谢~~~


函数

返回值类型 函数名(参数类型 形式参数1,参数类型 形式参数2,…)
{
    函数体
}
  • 主要作用:
    1.将一个常用的功能封装起来,方便以后调用
    2.提高代码重用率

  • 形参: 在定义函数时,函数名后面的小括号()中定义的变量称为形式参数,简称形参,形参一定是变量
    形参变量只有在被调用时才分配内存单元,在调用结束时,即刻释放所分配的内存单元。因此,形参只有在函数内部有效。函数调用结束返回主调函数后则不能再使用该形参变量。

  • 实参: 在调用函数时传入的值称为实际参数,简称实参,实参可以是常量,变量,表达式

  • 注意点:

    1) 返回值可以和返回值类型不一样,系统会对返回值进行自动类型转换(隐式转换)
    2) 如果函数没有返回值,那么返回值类型就写void
    3) 函数名称不能相同,形参,返回值类型不同也不行,即不能重载
    4) c语言不允许函数嵌套
    5) 函数可以没有返回值类型,默认返回int类型
    6) 调用函数时传递的实参个数必须和函数的形参个数必须保持一致
    
  • return 0: 返回0表示程序正确结束,其他值代表程序非正常结束

  • argc: 系统传递进来的参数,默认为1

  • argv: 系统传递进来的参数的实际值,默认是程序的名称


递归练习

需求:要求用户输入一个大于0的数,如何不大于0一值提示,知道大于0为止

#include <stdio.h>

void scanNumber();

int main(int argc, const char * argv[]) {

    scanNumber();
    return 0;
}


void scanNumber(){

    // 接收值
    printf("请输入一个大于0的数字:\n");
    int number = -1;
    scanf("%d", &number);

    // 判断
    if (number <= 0) {
        scanNumber();
    }else{
        printf("m=%d\n", number);
    }
    // 递归要有明确的结束条件,防止死循环
}

用递归算法求累加和、累乘

#include <stdio.h>

int sum(int a); // 求累加和
int mul(int b);// 求累乘

int main(){
    // 接收值
    printf("请输入一个大于0的数字:\n");
    int number = -1;
    scanf("%d", &number);

    printf("sum = %d\n", sum(number));
    printf("mul = %d\n", mul(number));
    return 0;
}

int sum(int a){
    int result = 1;
    if(a == 1){
        return result;
    }else{
        return sum(a-1) + a;
    }
}
int mul(int b){
    int result = 1;
    if(b == 1){
    return result;
    }else{
        return uml(b-1) * b;
    }
}

函数的嵌套调用与递归调用有什么区别?

答:
    函数的嵌套是语言特性,递归是逻辑思想;

    函数嵌套就是允许函数中调用另一个函数,

    递归通过函数嵌套来实现,自己调用自己,

    总的来说,函数嵌套就是函数调用函数,递归就是函数调用自己,是函数嵌套的一个特例

更多关于iOS学习开发的文章请登陆我的个人博客www.zhunjiee.com,欢迎前来参观学习


zhunjiee
260 声望5 粉丝

简简单单每一天,做一只快乐的程序猿!


引用和评论

0 条评论