📜  C函数参数和返回值

📅  最后修改于: 2021-05-25 21:10:35             🧑  作者: Mango

先决条件: C / C++中的函数C语言中的函数可以带参数调用,也可以不带参数调用。这些函数可能会也可能不会将值返回给调用函数。在C程序中,可以使用带参数或不带参数的方式调用所有C函数。同样,它们可能会也可能不会返回任何值。因此,C语言中函数的函数原型如下:

有以下类别:

  1. 不带参数和返回值函数:当函数没有参数,它不从调用函数接收任何数据。类似地,当不返回值时,调用函数不会从被调用函数接收任何数据。
    句法 :
    Function declaration : void function();
    Function call : function();
    Function definition :
                          void function()
                          {
                            statements;
                          }
    
    // C code for  function with no
    //  arguments and no return value
      
    #include 
    void value(void);
    void main()
    {
        value();
    }
    void value(void)
    {
        int year = 1, period = 5, amount = 5000, inrate = 0.12;
        float sum;
        sum = amount;
        while (year <= period) {
            sum = sum * (1 + inrate);
            year = year + 1;
        }
        printf(" The total amount is %f:", sum);
    }
    

    输出:

    The total amount is 5000.000000
    
  2. 带有参数的函数,但没有返回值:当一个函数的参数,它接收来自调用函数的任何数据,但它没有返回值。

    句法 :

    Function declaration : void function ( int );
    Function call : function( x );
    Function definition:
                 void function( int x )
                 {
                   statements;
                 }
    
    // C code for function 
    // with argument but no return value
    #include 
      
    void function(int, int[], char[]);
    int main()
    {
        int a = 20;
        int ar[5] = { 10, 20, 30, 40, 50 };
        char str[30] = "geeksforgeeks";
        function(a, &ar[0], &str[0]);
        return 0;
    }
      
    void function(int a, int* ar, char* str)
    {
        int i;
        printf("value of a is %d\n\n", a);
        for (i = 0; i < 5; i++) {
            printf("value of ar[%d] is %d\n", i, ar[i]);
        }
        printf("\nvalue of str is %s\n", str);
    }
    

    输出:

    value of a is 20
    value of ar[0] is 10
    value of ar[1] is 20
    value of ar[2] is 30
    value of ar[3] is 40
    value of ar[4] is 50
    The given string is : geeksforgeeks
    
  3. 函数不带任何参数,但返回值:可能有场合,我们可能需要设计可能不带任何参数,但返回一个值给调用函数的功能。一个示例是getchar函数,它没有参数,但它返回一个整数和表示字符的整数类型数据。
    句法 :
    Function declaration : int function();
    Function call : function();
    Function definition :
                     int function()
                     {
                         statements;
                          return x;
                      }
        
    // C code for function with no arguments 
    // but have return value
    #include 
    #include 
      
    int sum();
    int main()
    {
        int num;
        num = sum();
        printf("\nSum of two given values = %d", num);
        return 0;
    }
      
    int sum()
    {
        int a = 50, b = 80, sum;
        sum = sqrt(a) + sqrt(b);
        return sum;
    }
    

    输出:

    Sum of two given values = 16
    
  4. 与参数和返回值函数
    句法 :
    Function declaration : int function ( int );
    Function call : function( x );
    Function definition:
                 int function( int x )
                 {
                   statements;
                   return x;
                 }
    
    // C code for function with arguments 
    // and with return value
      
    #include 
    #include 
    int function(int, int[]);
      
    int main()
    {
        int i, a = 20;
        int arr[5] = { 10, 20, 30, 40, 50 };
        a = function(a, &arr[0]);
        printf("value of a is %d\n", a);
        for (i = 0; i < 5; i++) {
            printf("value of arr[%d] is %d\n", i, arr[i]);
        }
        return 0;
    }
      
    int function(int a, int* arr)
    {
        int i;
        a = a + 20;
        arr[0] = arr[0] + 50;
        arr[1] = arr[1] + 50;
        arr[2] = arr[2] + 50;
        arr[3] = arr[3] + 50;
        arr[4] = arr[4] + 50;
        return a;
    }
    

    输出:

    value of a is 40
    value of arr[0] is 60
    value of arr[1] is 70
    value of arr[2] is 80
    value of arr[3] is 90
    value of arr[4] is 100
    
    要从最佳影片策划和实践问题去学习,检查了C++基础课程为基础,以先进的C++和C++ STL课程基础加上STL。要完成从学习语言到DS Algo等的更多准备工作,请参阅“完整面试准备课程”