C语言,请问这个函数返回值怎么不妥?==

char* strcat_(char a[],char b[])
{char c[300];int i,j;
for(i=0;;i++)
{if(a[i]=='\0')break;
else c[i]=a[i];}
for(j=0;;i++,j++)
{c[i]=b[j];
if(b[j]=='\0')break;}
return c;}

第1个回答  2013-02-26
问题大了,char c[300]是函数内申请的局部变量,只在函数内部,函数返回就销毁了。
应该设计为char* strcat(char* dst,const char*src)
让dst=src+dst;
然后返回dst

char* __cdecl strcat(
char* dst,
constchar* src
)
{
char* cp = dst;

while( *cp )
cp++; /* find end of dst */

while( *cp++ = *src++ ) ; /* Copy src to end of dst */

return( dst ); /* return dst */

}
第2个回答  2013-02-26
你的c是在函数内部开辟的空间,也就是在栈中开辟的,函数结束时栈销毁了,也就是c你就找不到了,你能把它返回么?如果你用指针则可以,如:char *c=new char[300]....或者传给函数一个字符数组,如:char* strcat_(char a[],char b[],char c[])本回答被提问者采纳
第3个回答  2013-02-26
C是一个数组名,rerurn C肯定不对啊,试下rerurn c[i];追问

不行==返回的不是一个指针吗?c就是c[0]的指针啊~

C语言,请问这个函数返回值怎么不妥?==
问题大了,char c[300]是函数内申请的局部变量,只在函数内部,函数返回就销毁了。应该设计为char* strcat(char* dst,const char*src)让dst=src+dst;然后返回dst char* __cdecl strcat(char* dst,constchar* src ){ char* cp = dst;while( *cp )cp++; \/* find end of dst *\/ whi...

[C语言]关于函数返回值的问题。万分感谢!
返回值的概念就是你所调用的函数返回给你的值。函数可以有返回值 ,也可以没有返回值 。例如:当你调用了一个函数时,比如说void fun(int n,int m);前面的void就说明这个函数是没返回值的。只要在前面出现了一个void就是没有返回值的。再者,当你调用了函数,比如int fun(int m);时,前面的in...

关于c语言中函数返回值的问题
函数返回一个值, 不能是一个数组的值(可以是数组的地址)因为不允许使用地址, 对于这个题目, 使用全局变量是一个很好的解决方法.你程序的问题在于函数调用时传入的a[3][3],这是错误的,正确的传入方式是wc(a);因为这里实际传入的是地址, 直接写a则是数组第一个元素的地址, 写a[3][3]则是最后...

C语言函数返回值问题
一个是void型的子函数,这个子函数要求不需要返回值,也就是这个函数功能不需要返回值的子函数。这个也是有个返回值的,好像是调用成功返回非零,不成功返回零 第二种是非void型的子函数,这个函数会返回一个定义子函数时类型的一个数值 如定义int f(int m)这个就是返回一个int型的数值 值得注意的...

为何函数不能返回值?
c语言规定,函数返回值的类型是由函数首部定义的类型决定。函数返回值应与首部定义的类型一致,如若不一致,则自动将返回值强制转换为函数首部定义的类型。没有定义类型时默认为int型。也就是说你的函数是什么类型,返回值就是什么类型。比如:函数定义 int fun(int a,char b)返回值就是整型 函数定义 ...

问一下c语言函数返回值的问题?
在被调用函数里,任何合理的表达式都可以作为返回值, 表达式的结果就是返回值。 就这个问题而言, c的内容就是返回值。 他有权返回什么跟调用它的函数里的一切都毫无关系。对调用它的函数而言, 相当于在调用的位置写一个常量,这个常量的值就是那个函数的返回值。

C语言,在主函数中为什么不能修改函数的返回值???
这个函数返回的是一个地址,不能作为左值 比如你在windows下编程,函数返回值存放在eax寄存器中 那么回到main函数的时候eax里存放的就是whw函数返回的一个地址的值,假设为0xffffffff 想象一下,0xffffffff = 5是几个意思,就类似于表达式15 = 5 退一步讲whw返回的是一个int*类型,怎么能赋个5 就...

求问C语言写一个float函数,其返回值和在函数内数值不同,是怎么回事
可能是语法不规范,导致的编译器的问题。函数原型最好提前声明,特别是float强制转换成double的情况。编译通过的代码贴在了Ubuntu pastebin中:链接 图片预览:你可以通过这个网站在线验证一下:链接

这是一个c语言函数返回值的问题,谁能告诉我这里return的作用?谢谢...
return就是返回啊,你这个题是错误滴,c语言中默认的返回值类型是int型,但是你的z是浮点型,返回的时候小数部分的数据会丢失,本来应该是2.5的,丢失小数位后变为2了

c语言,关于函数返回值的问题。请问这里的return n==i怎么理解?
n==i是个逻辑运算,它的结果要么为0(假),要么为1(真)。所以这句话的意思就是:if (n == i){ return 1;} else { return 0;}

相似回答
大家正在搜