C语言函数可以有返回值吗?

作者&投稿:司达 (若有异议请与网页底部的电邮联系)
~

c语言规定,函数返回值的类型是由函数首部定义的类型决定。函数返回值应与首部定义的类型一致,如若不一致,则自动将返回值强制转换为函数首部定义的类型。没有定义类型时默认为int型。

也就是说你的函数是什么类型,返回值就是什么类型。

比如:

函数定义 int fun(int a,char b)

返回值就是整型

函数定义 int *fun(int a)

返回值就是基类型为整型的指针

函数定义 void fun(int a)

无返回值

扩展资料

函数可以有返回值,只要 return 就可以给出一个,不过常常不用它,有两个原因:

1、C/C++里返回值是复制出去的,而对于大的对象,复制的代价很高;

2、有些对象是不能复制的,至少编译器不知道怎么复制,比如数组。

于是有了下面这样的函数:

bool GetObj(ObjType& obj);

bool Encode(const char* src, char* dest);

用一个参数来代替返回值,而返回值只是指示函数执行是否成功。

返回一个大对象是困难的,但这个困难存在于 C 程序中,而不是 C++ 程序中。 C 函数里较少通过返回一个指针来返回对象,因为:

1、如果指针指向栈变量,毫无疑问,要么不用这个返回值,要么是一个错误;

2、如果指针指向堆变量,需要用这个函数的程序员会好好的看文档且足够细心会调用 free,要么就是内存泄漏;

3、如果指针指向 static 变量,那么用这个函数的程序员牢牢记住“下次调用这个函数以后,上次的返回值也会跟着变”。

在C++里直接返回裸指针的话,情况并不会有什么起色,不过 C++ 有智能指针的,通常它们指向堆变量,占用的空间和裸指针一样大。考虑前面第一个函数,写成:

std::auto_ptr<ObjType> GetObj();

返回值如果不要,作为临时变量,会立即被析构,返回的对象被释放;如果需要,就得赋值给另一个智能指针。总之不用程序员记得,编译器会保证这个对象的释放。

考虑第二个函数,稍微有一点麻烦,因为 auto_ptr 是不能用来持有数组的,不过,在C++的世界里,std::string 几乎总是比 char* 好用:

std::auto_ptr<std::string> Encode(const char* src);

最后考虑最麻烦的情况:

bool AssembleObjList(ObjType objList[], size_t length);




C语言中 return函数 都可以返回什么东东?
就一定要用return 返回一个与函数类型相同的数值或变量,即返回值;反之,可以不用return,或使用无任何返回值的return。例如:1.非void型 int f1(){ int i=1;return 1;\/\/return(i); \/\/这样也可以 } 2.void型 void f2(){ int i=1;\/\/return;\/\/这样也可以,不要这一句也可以 } ...

调用函数时没有return语句函数有返回值吗
c++函数没有return当然不会有返回值。return是C语言中的一个关键字,意为返回。return就是用来被调函数返回到主调函数继续执行,返回时可附带一个返回值,由return后面的参数指定。不行。在C语言中实参对形参是单向传值,没有return语句,函数是不会返回任何值的。除非你的实参是一个指针,那么在函数里...

C语言中,无参函数能return返回值吗?
可以的。例如:include <stdio.h>int fun(){return 1;}int main(){ printf("%d",fun());return 0; }\/*运行结果:1*\/

C语言中main()函数是否返回值?
考虑到main函数的特殊性,lz不明白这个问题可以理解。main()是省略了返回值类型,C语言会默认认为成main的类型为int,在main()的函数体内要返回一个值,如return 0;而void main()的返回值是void类型,也就是说没有返回值。这样在main()的函数体内你就不用写return 0;或者return 1;之类的返回语句...

C语言中函数可以返回哪些类型的数据?(求详解)
main 函数的返回值应该定义为 int 类型,C 和 C++ 标准中都是这样规定的。虽然在一些编译器中,void main 可以通过编译(如 vc6),但并非所有编译器都支持 void main ,因为标准中从来没有定义过 void main 。g++3.2 中如果 main 函数的返回值不是 int 类型,就根本通不过编译。而 gcc3.2 则...

c语言中,已定义的函数有返回值,函数调用能否作为一个独立的语句_百度知 ...
1 可以,返回值被丢弃 2 可以,返回值是实参的值 3 可以,用返回值来进行运算 4 和2一样,是否书写错误

C语言中函数必须有返回值吗?没有无法使用对吗?
不是必须有返回值。如果没有返回值类型名为"void"。void函数的定义:void+函数名()\/\/无类型+函数名 {\/\/ 程序代码} 如果没有返回值类型名为"void", 整数类型int 类型返回值为整数类型int,以此类推??类型名有:void int long float int* long* float* ??

C语言中函数必须有返回值吗?没有无法使用对吗?
不是必须有返回值。如果没有返回值类型名为"void"。void函数的定义:void+函数名()\/\/无类型+函数名 {\/\/ 程序代码} 如果没有返回值类型名为"void", 整数类型int 类型返回值为整数类型int,以此类推……类型名有:void int long float int* long* float* ……...

c语言如何定义一个函数可以返回多个值回去给主函数呀。
函数的返回值顶多是一个数,通过函数直接返回的这个数只有在是指针时才能给出多个数据结果。可以考虑以下几个方法:返回指针:int* display() { int *p; p=malloc(sizeof(int)*6); ... return p; } \/\/用p[0]~p[5]计算各位 void main() { int *p; p=display(); ... free(p); }...

c语言中函数里是不是遇到return语句就不再执行函数剩下的内容直接返回了...
是的。例如:fun1(){ return;printf("fun1");} fun2(){ fun1();printf("fun2");} main(){ fun2();}

台山市13478697624: C语言中函数必须有返回值吗?没有无法使用对吗? -
聂力盐酸: 在写函数时, 我们一般用 类型+函数名 来定义函数,void类型是空返回值,也就是没有返回值. 其他的,如int、double等类型函数,需要返回相应类型的返回值.

台山市13478697624: c语言中函数一般都有返回值吗? -
聂力盐酸: 不一定.简单的C语言函数设计中,一般都设计成无返回值 void 类型函数.实在设计需要的情况下,才会定义相应的返回值相应类型.当然,返回值也是函数重要的特性.有返回值使程序设计得灵活.能更好的交互 ,和其他函数相互作用.没有返回值类型的函数,一般都相对缺乏灵活性.

台山市13478697624: c语言中,对于函数和参数来说,函数的返回值可有可无,这句话对吗? -
聂力盐酸: 如果函数声明为void,那么函数不能有返回值;否则,函数必须返回一个和声明的返回值类型相符的值.

台山市13478697624: C语言中主函数是否有返回值,如果有,最多有几个? -
聂力盐酸: 有且必须要 C99以上标准规定主函数必须返回int 返回值可以有多个值但是只返回其中一个比如FILE *p = fopen(file_path); if (p==NULL)return 1; elsereturn 0; 这样主函数可以返回1或0,但是每次运行文件打开失败与否只返回其中一个

台山市13478697624: C语言是否只有 有参函数才能有函数返回值? -
聂力盐酸: 有的.

台山市13478697624: C语言中返回值 -
聂力盐酸: 首先,C语言中的函数有两种形式:1)有返回值,2)无返回值.有返回值的函数会把执行的结果(也就是你写这个函数的目的)返回到主函数中.没有返回值的函数主要是为了完成某种任务(其实这是废话,函数的功能就是为了完成某种任务...

台山市13478697624: C语言中自定义函数能既有输出又有返回值吗 -
聂力盐酸: //当然可以.//如:#include<stdio.h>#include<stdlib.h> int main() { int f(int *pt); int r,out; r=f(&out); printf("r=%d,out=%d!\n",r,out); system("PAUSE"); return EXIT_SUCCESS; } int f(int *pt) { int r=100;*pt=1001; printf("返回%d到主调函数!\n",r); return r; }

台山市13478697624: c语言的函数返回值? -
聂力盐酸: 所谓返回值,就是人们想要知道函数或者程序所得到 的结果而设计的函数或者程序结束时给出一个值.比如:我们编写一个加法函数,肯定想知道加完过后的结果是什么,那么我们就指定这个结果为该加法程序的返回值.关于返回值的返回: 1、函数调用语句本身代表其返回值:例如:fun(a);那么“fun(a)”就是这个返回值. 2、可以把返回值存到对应类型的变量之中.例如:int a=fun(b); 3、返回值是多种多样的,可以是各种各样的,int short char double 等等,还可以是指针或者结构体.在数据结构的二叉树部分,某一个函数的返回值是一个带有两个指针的结构体.

台山市13478697624: c语言返回值具体是指什么? -
聂力盐酸: 子函数的返回值,main主函数也是有返回值的,但是一般用不到都忽略掉了,一般来说的返回值就是子函数的返回值.当需要一个函数去处理数据时,如求平方,这时候求平方后的值可以有两种方法表达 1、以值的形式返回给你,即return x,...

台山市13478697624: C语言中什么是函数的返回值? -
聂力盐酸: 就是调用子函数后(例如int 型),子函数根据实际需要处理后返回给主函数的int型数据. 子函数返回值的类型和和子函数的类型相同.否则程序出错.

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网