c++的函数返回值类型不确定的情况下,返回值应该定义成什么?

求大神帮忙解惑
2025-05-01 02:58:43
推荐回答(1个)
回答1:

您好,说的这问题总结一下有几点可以说:
首先就拿你说的strcat来说吧,它的返回值类型你可能没用过,不过类型是char*你可能也能够猜到它是连接后的字符串了。而且它确实如此。strcat(s,t);通过这个调用以后,t串将连到s串后边,那么s串就是我们连接好的串,同时它的返回值也是连接好的串,也就是返回值也是s,这就使得一个问题得以方便,比如我要连接这个串后并输出,那么你可能写的代码是这样:
strcat(s,t);
printf("%s\n",s);
但此处我也可以这么写:printf("%s",strcat(s,t));
我高兴的话还可以这么写:printf(strcat(s,t));
以上三个结果都是一样的。那你看,很显然后两种更简洁一些。
这也就总结出第一条,在处理程序中使得某些问题简化。通常这种在参数为指针时常见
再来看一个scanf 它的返回值,它的返回值你也应该从来没有用过吧?它的意义是返回正确读入变量的个数,比如scanf("%d",&i);如果正确读入一个整数的话它就返回1,否则返回0
那么通过这个1和0我们就可以判断它是否正确读入的变量,并且读了几个。在ACM中我们常见的写法是while(scanf("%d",&n)!=EOF) 来实现数据的循环读入
那么这第二条便是通过返回值来判断成败。
再比如说fopen这个是打开文件的函数,它的返回值我们常用,这里只是提一点,它其实会返回打开的文件指针,但有一种情况就是文件没有打开,或是打开失败,这时初学者常忽略一个问题就是如果失败了咋办,如果不特别处理你还使用着那个失败的文件指针必然得不到想要的结果,甚至出现问题。所以别忘了某些函数在失败的时候的返回值,这和你问题似乎有些连系。

总结大至是以上三点吧,一个函数返回值并不是没有用的,库函数即然设置了一般都会有它的用意。