美文网首页
函数定义及函数调用、参数传值类型

函数定义及函数调用、参数传值类型

作者: SuperDing | 来源:发表于2016-09-19 08:51 被阅读0次

    一、函数的定义:
    1、函数:函数是具有某一特定功能的若干代码的集合,当需要使用这些代码实现该项功能的时候调用该函数的名字即可。
    定义一个:
    函数的返回值类型 函数名(函数参数类型 参数名a,函数的参数类型 参数名b)
    {
    函数体;
    }

    int func(int a,int b) //函数的定义
    {
    printf("%d %d\n",a,b);
    return 0;
    }
    func(1,2); //函数的调用

    注:1.函数原则上可以有无数个参数,但通常就3个左右,也可以不带参数
    2.各参数之间用逗号分割
    3.函数如果没有返回值,那么函数返回值类型为void,在函数结尾可以写return;也可以不写
    4.如果函数有返回值,那么它返回什么值,函数的返回值类型就是相应的类型。
    5.原则上一个函数只能最多有1个返回值。

    函数的声明:如果函数的定义在调用的后面,在调用之前声明函数,建议函数的定义放在调用的前面(不用函数声明)
    声明的方法,最简单的就是把定义函数的第一句话抄过去,带参数的函数,可以直接抄过去,也可以参数的名字不写,但是参数的类型必须要写

    函数的使用:
    1.函数必须先定义再使用,如果想先使用,必须在使用它之前声明它,声明的方法,最简单的就是把定义函数的第一句话抄过去,带参数的函数,可以直接抄过去,也可以参数的名字不写,但是参数的类型必须要写
    2.使用函数通过调用该函数的名字,有带参数的函数要给它传递参数进去,不带参数的不传

    2、函数定义的注意点:
    1、函数定义不能嵌套定义(不能放在其他函数内)
    2、函数除了main函数外,其他函数定义时,返回值类型不能省略。
    3、如果函数的返回值是int float double char 指针等,函数必须要加return 返回值变量,
    return后面的值的数据类型必须要与函数返回值的数据类型保持一致。
    4、void:空类型
    5、函数定义和声明后面的()里面的内容必须一致,函数参数名可以不写,但类型必须写。
    6、
    3、变量的作用区域分为:
    全局变量:在函数外面定义的变量(要在程序开始的时候(所有函数前面定义)定义全局变量);全局有效。
    局部变量:是在函数内部定义的变量,在函数内部使用。
    注意:变量作用域决定变量的可访问
    当局部变量和全局变量重名的时候,以最后见到的变量为准。

    变量的存储方式:
    静态存储:
    动态存储:
    4、
    auto:自动变量,函数结束,则变量消失,空间释放。 int a=9;其实是 auto int a=9;
    static:静态变量,声明出来必须有唯一确定值。
    当程序开始使用的时候给变量开辟空间,直到程序结束后变量才消失,空间才释放
    当程序第一次调用时保留这次调用的值,下次再使用时保留上一次的值
    const:只能读取,不可修改
    1》 int const a;const int a;等同
    int a=1;
    2》 int * const p;//p这个变量只读,将来这个指针只能指向a。
    3》 const int *p;//使用p访问这个变量只读
    4》 const int * const p;//使用p访问这个变量只读,p这个变量只读,将来这个指针只能指向a


    二、传参类型实例:
    -------------------------------------无参数

    include <stdio.h>

    void Print(); //如果函数的定义在调用的后面,在调用之前声明函数
    void main()
    {
    Print();//函数的调用
    }
    void Print()//定义函数
    {
    printf("i am very good\n");
    }
    -----------------------------------有1个参数

    include <stdio.h>

    int Print(int);
    void main()
    {
    int b=5;
    int c;
    c=Print(b); //a=b 赋值是个拷贝的过程
    printf("c=%d\n",c);
    }
    int Print(int a)//函数的定义
    {
    printf("a=%d\n",a);
    return a;
    }
    --------------------------------------------有一个指针参数
    void swap(int *p,int q)//交换两个数的值
    { int tmp=
    p;
    p=q;
    *q=tem;
    }

    int main()
    {
    int a=3,b=4;
    swap(&a,&b);//指针参数 传地址,从地址上改变两个数的值
    printf("a=%d b=%d\n"a,b);
    }


    怎么向一个函数里面传地址:

    include <stdio.h>

    void Print(int *); //参数是地址的时候
    void main()
    {
    int a=5;
    Print(&a); // int *p=&a
    }
    void Print(int p)
    {
    printf("a=%d\n",
    p);
    }

    ---------------------------向一个函数里传递数组:
    方法1:

    include <stdio.h>

    void Print(int a[]); //参数是数组 函数声明
    void main()
    {
    int b[5]={1,2,3,4,5};
    int k=sizeof(b)/sizeof(int);//计算数组中数据的个数
    Print(b,k);
    }
    //定义一个函数
    void Print(int a[],int size) //参数是指针
    {
    int i=0;
    for(i=0;i<size;i++)
    printf("%d\n",a[i]);
    }


    方法2:

    include <stdio.h>

    void Print(int *);
    void main()
    {
    int b[5]={1,2,3,4,5};
    int k=sizeof(b)/sizeof(int);//计算数组中数据的个数
    Print(b,k);
    }
    void Print(int *a,int size) //参数是指针
    {
    int i=0;
    for(;i<size;i++)
    printf("%d ",a[i]);
    }

    相关文章

      网友评论

          本文标题:函数定义及函数调用、参数传值类型

          本文链接:https://www.haomeiwen.com/subject/ptngettx.html