笔记九

一,函数

1.函数的基本概念:函数就是把代码中功能相似并且独立的代码单独封装成一个独立的整体。

(1)函数的优点:
  提高代码的简洁性,提高开发效率。提高代码的重用性,有利于程序的维护。
(2)函数的分类
  分类一:
   系统函数:
   由c系统提供的函数;如printf(),sanf()……
   用系统函数时,只需将其对应的头文件包含进来即可
   如:#include <stdio.h>------->printf("hello");
   小写字母转大写字母:toupper()
   大写字母转小写字母:tolower(;)
  自定义函数:
   用户根据自己需要定义的函数
 分类二:
   有返回值函数:函数调用结束后,会返回一个数值给主调函数;
   无返回值函数:函数结束后,无返回值,一般定义为void类型,即空类型。
 分类三:
   有参函数:参数可以任意多个
   无参函数:没有参数

2.函数的基本定义

(1)定义无参数函数
   datetype functionname(){
   //函数体
    //可执行语句
   }
   注:函数名后的括号不可以省略!!!
 (2)有参函数的定义
   datetype functionname(参数列表){
  //函数体
   }
 注:参数列表可以有多个,参数的类型可以任意(相对)!!!

(3)函数的定义、声明及调用
   函数的定义:
   datetype functionname(参数列表){
   //函数体
   }
  函数的声明:
   datatype functionname(参数列表);
   注:声明是参数列表一定要和定义是的参数列表一致!!
   函数的调用:
   function name(value);
   value:数值
   注:函数调用时,实参的值类型一定要和函数定义时的形参列表一致!!!

实参:实际参数,即具体的返回值
 形参:形式参数,形参的定义和普通变量的定义无区别。
 注:函数名表示

3.函数的返回值

无返回值的类型函数类型为:void
  datatype functionname(参数列表){
  //函数体i
  }
  datetype:决定了函数的返回值类型,若是int则返回值类型是int型
  如果的返回值能够在后面的程序中使用,则需要相同類类型的变量接受返回值。若是void类型的函数,則无返回值。return可有可无,反之必须要rieturn

4.return的作用

(1)函数遇到return,则結束,后面的代码不再执行
 (2)用于返回函数的值即执行结果

4.关键字

(1)变量分全局变量和局部变量;
    全局变量:在函数体之外定义的变量;其作用域从变量的声明开始到结束
    局部变量:在函数中定义的函数,其作用域为整个函数。函数结束时,局部变量自动消亡。因此不同的函数中可以使用相同的变量名。
    auto:声明变量是动态变量,可以省略。
    生命周期(动局):仅限于定义该变量的函数中。
    生命周期(动全):从生命开始到程序结束。
     如:(auto) int a=1;
    static:声明变量为静态变量;
    静态变量定义时没有初始化,则系统默认初始化为:0

extern:
   声明为外部变量:external int num;
   修饰函数:extern int test();
   声明变量或函数在外部已经定义
 registre:
   寄存器变量:变量直接存放在寄存器中
   CPU的寄存器个数有限,不可以定义多个寄存器变量
 const:

5.函数的传参

值传递:
 地址传递:

6.指针函数和函数指针

指针函数:
   int *test();
   返回一个局部地址是不允许的,没有意义,注意返回值问题,返回的是一个地址
函数指针:

作业:

1.通过函数比较两个数的大小

int dx(int a,int b){
    if(a==b){
        return 0;           
    }else if(a>b){
        return a;
    }else{
        return b;
    }
}
    int main(){
    int c=dx(5,5);
    if(c==0){
        printf("两个数相等!!\n");
    }else{
    printf("%d\n",c);
    }
}

2.编写一个程序,用于产生20个0~10之间的随机数,将这20个随机数存入数组,并通过函数统计这些随机数中某个数出现的次数。

int sj(int *a){ 
srand(time(0));
int i=0;
int list[20];
int f=0;
for(i=0;i<20;i++){
    list[i]=rand()%10;
    printf("%d\n",list[i]);     
}   
for(i=0;i<20;i++){  
    if(*a==list[i]){
        f++;
    }
 }  
printf("这个数一共出现了: %d 次",f);
}
int main(){
int num=0;
printf("input num: ");
scanf("%d",&num);
sj(&num);
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 前言 把《C++ Primer》[https://book.douban.com/subject/25708312...
    尤汐Yogy阅读 13,146评论 1 51
  • Elixir 是函数式语言,函数是 Elixir 的核心,也是一种基本类型。前面我们已经知道一些内建的函数,例如d...
    人世间阅读 7,022评论 4 7
  • 常量与变量使用let来声明常量,使用var来声明变量。声明的同时赋值的话,编译器会自动推断类型。值永远不会被隐式转...
    莫_名阅读 3,283评论 0 1
  • 前言 人生苦多,快来 Kotlin ,快速学习Kotlin! 什么是Kotlin? Kotlin 是种静态类型编程...
    任半生嚣狂阅读 26,399评论 9 118
  • 斟酒自独饮, 脆果口中嚼。 猫馋蹭门洞, 酒香肆意扬。
    疯不语AOA阅读 819评论 0 1