
正文
c语言函数返回类型不确定 c语言函数返回类型不确定值怎么办
提示:扫一扫查出行【扫一扫了解最新限行尾号】
复制提示
c语言中函数返回值的类型由什么决定?
是由你定义函数时所定义的函数的类型决定的。
也就是说函数是什么类型,返回值就是什么类型。
比如:
函数定义 int fun(int a,char b)。
返回值就是整型。
函数定义 int *fun(int a)。
返回值就是基类型为整型的指针。
函数定义 void fun(int a)。
无返回值。
简介
在调用函数时,如果需要从被调函数返回一个值供主调函数使用,那么返回值类型必须定义成非 void 型。此时被调函数中必须包含 return 语句,而且 return 后面必须要有返回值,否则就是语法错误。
一个函数中可以有多个 return 语句,但并不是所有的 return 语句都起作用。执行到哪个 return 语句,就是哪个 return 语句起作用,该 return 语句后的其他语句都不会执行。
相关问答
Q1: 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_ptrObjType GetObj();
返回值如果不要,作为临时变量,会立即被析构,返回的对象被释放;如果需要,就得赋值给另一个智能指针。总之不用程序员记得,编译器会保证这个对象的释放。
考虑第二个函数,稍微有一点麻烦,因为 auto_ptr 是不能用来持有数组的,不过,在C++的世界里,std::string 几乎总是比 char* 好用:
std::auto_ptrstd::string Encode(const char* src);
最后考虑最麻烦的情况:
bool AssembleObjList(ObjType objList[], size_t length);
Q2: 有一个C语言函数,不知道设置什么样的返回值类型,请高手指点
返回值只能返回一个,如果想返回多个,有以下两种方法:
1、自定义类型,包含有所需要返回的所有值,返回自定义类型
2、返回值随便选一个,其他需要返回的以出参形式返回。
bool DoNetSocket(int nErrorCode)
{
nErrorCode = NetSocket(NET_AF_INET,NET_SOCK_STREAM,0);
if(nErrorCode = 0)
{
g_iTcpSocket = nErrorCode;
return RET_OK;
}
else
{
return false;
}
}
如上,返回值为bool,表示创建失败与否,
出参int nErrorCode,返回创建socket失败时,错误代码
使用时:
int nErrorCode =0;
if(DoNetSocket(nErrorCode))
{
printf("创建socket成功\n");
}
else
{
printf("创建socket失败,错误代码%d\n",nErrorCode);
}
Q3: 在C语言中,若调用一个函数,且此函数没有return值,该函数返回一个不确定的值,这句话对吗?
对的,C语言中函数句柄(指针)指向一个地址,如果该函数没有Return,那么函数句柄就没有被赋值,会返回句柄指向内存的值,表现出一个随机的数。
Q4: 函数定义rpid max(int a, int b)表示该函数的返回值不确定 c语言判断对错
int mian() ////这里是 int main() { float a=2.6, b; b=max(2.1, 3.6)=a++; // 这里想干什么没看出来,但这里确实有错,如果改的话,可以把第二个=改成 , 或 ; printf("%f",a+b); ////最后应该添加一个 return 0; } 2. 不需要,应该在定义宏的时候,根本不涉及参数的类型
Q5: C语言函数返回值异常
你说的是函数的返回者吧函数的值是指函数被调用之后,执行函数体中的程序段所取得的并返回给主调函数的值。如调用正弦函数取得正弦值。对函数的值(或称函数返回值)有以下一些说明: 1) 函数的值只能通过return语句返回主调函数。 return 语句的一般形式为: return 表达式;或者为: return (表达式);该语句的功能是计算表达式的值,并返回给主调函数。在函数中允许有多个return语句,但每次调用只能有一个return 语句被执行,因此只能返回一个函数值。 2) 函数值的类型和函数定义中函数的类型应保持一致。如果两者不一致,则以函数类型为准,自动进行类型转换。 3) 如函数值为整型,在函数定义时可以省去类型说明。 4) 不返回函数值的函数,可以明确定义为“空类型”,类型说明符为“void”。如例8.2中函数s并不向主函数返函数值,因此可定义为: void s(int n) { …… } 一旦函数被定义为空类型后,就不能在主调函数中使用被调函数的函数值了。例如,在定义s为空类型后,在主函数中写下述语句 sum=s(n); 就是错误的。为了使程序有良好的可读性并减少出错, 凡不要求返回值的函数都应定义为空类型。
c语言函数返回类型不确定的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于c语言函数返回类型不确定值怎么办、c语言函数返回类型不确定的信息别忘了在本站进行查找喔。







