⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 codetc38.dat

📁 是关于汇编指令的一个小字典,用起来很舒服,对初学者应该有些帮助的
💻 DAT
字号:
函数的返回值

 通常,希望通过函数调用使主调函数能得到一个确定的值,这就是函数的返回值。例中max(2,3)的值是3,max (5,2)的值是5。赋值语 句将这个函数值赋给变量。下面对函数作一些说明:
 (1)函数的返回值是通过函数中的return语句获得的。return语句将被调用中的一个确定值带回主调函数中去。
    如果需要从被调用函数带回一个函数值(供主调函数使用),被调用函数中必须包含return语句。如果不需要从被调用函数带回函数值可以  不要return语句。
    一个函数中可以有一个以上的return语句,执行到哪一个return语句,哪一个语句起作用。
    return语句后面的括弧也可以不要,如
    return z;
    它与"return(z);"等价。
    return后面的值是一个表达式。例2.1中的函数max可以必定如下:
    max (int x,int y)
    {
      return(x>y?x:y);
    }
    这样的函数体更为简短,只用一个return语句就把求值和返回都解决了。
 (2)函数值的类型。既然函数有返回值,这个值当然应属于某一个确定的类型,应当在定义函数时指定函数数值的类型。例:
     
     int max (float x,float y)              /*函数值为整型*/
     char letter(char c1,char2)             /*函数值为字符型*/
     double min(int x,int y)                /*函数值为双精度型*/
     读者会问:例中的函数定义没有说明其类型,为什么?C语言规定,凡不加类型说明的函数,一律自动按整型处理。例中的max 函 数返回 值为整型,通过return语句把     z的值作为max的函数值,由max带回主调函数。z的类型与max函数的类型是相一致的。是正确的。
 (3)如果函数值的类型和return语句中表达式的值不一致,则以函数类型为准。对数值型数据,自动进行类型转换。即函数类型决定返回  值的类型。  
    例:返回值类型与函数类型不同。稍改动为:
    main()
    {
    float a,b;
    int c;
    scanf("%F,%f,"&a,&b);
    c=max (a,b);
    printf("Mains %d\n",c);
    }
    max (float x,float y);
    {float z;                /*为实型变量*/
    z=x>y?x:y;
    return(z);
    }
    
    运行情况如下:
   1.5,2.5
   max is 2
  
   函数max定义为整型,而return语句中的z为实型,二者不一致,按上的规定,先将z转换为整型,然后max(x,y)带回一个整型值2回主调函  数main函数中的c定义为实型   ,用%f格式符输出,也是输出2.000000。
   有时,可以利用这一特点进行类型转换,如在函数中进行实型运算,希望返回的是整型量,可让系统去自动完成类型转换。但这种做法往 往使程序不清晰,可读性降低,   容易弄错,而且并不是所有的类型都能互相转换的(如实数与字符类型数据之间)。因此建议初学者不要采用这 种方法,而应做到函数类型与return返回值的类型一致。
 (4)如果被调用函数中没有return语句,并不带回一个确定的,用户所希望得到的函数值,但实际上,函数并不是不带回值,而只是不带 回有用的值,带回的是一个不确定的    值。尽管没有要求printstar和print_message函数带回值,但是如果在程序中出现下面的语句合法的:
     {int a,b,c;
      a=printstar();
      b=print_message();
      c=printstar();
      printf("%d,%d,\n",a,b,c);
     }
     运行时除了得到和例中一样的结果个外,还可以输出a,b,c的值(今为21,20,21)。a,b,c的值不一定有实际意义(今printstar函数输出21个字 符,返回值     为21,print_message输出20个字条,返回值为20)。
 (5)为了明确表示"不带回值",可以用"void"定义"无类型"(或称"空类型")。
    例中的定义可以改为:
     void printstar()
     {  }
     voie peint_message()
     {  }
     这样,系统就保证不使函数带回任何值,即禁止在调用函数中使用被调用函数的返回值。如果已将printstar和ptint_message函数定义为 void类型,则下面的用法就     是错误的:
     a=printstar();
     b=print_message();
     编译时会给出出错信息。
     为使程序减少出错,保证正确调用,凡不要求带回函数值的函数,一般应定义为void类型。许多C语言书的程序中都大量用到void类型函 数,读者应对此有一定了解。

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -