注册 登录
编程论坛 C++教室

麻烦路过的朋友帮解释一下程序中关于 return 的一些小问题

S_12s 发布于 2010-11-08 18:37, 834 次点击
程序如下:
#include <iostream>

using namespace std;

char *inputa()
{
    char str[20]="123";
    return str;
}

char *inputp()
{
    char *str="123";
    return str;
}

int main()
{
    char *p=inputp();
    cout<<inputa()<<","<<p<<endl;
    return 0;
}
为什么编译时 char *inputa()中有警告,而且输出结果有乱码??这是不是 return 的问题??麻烦各位不吝赐教……
6 回复
#2
pangding2010-11-08 20:05
不是 return 的问题。

首先 inputa 中 str 的类型是 char [20] 不是 char *。返回类型与函数声明的返回类型不一样,这是警告的一可能的原因。
不过,当然那个函数本身也有问题,有警告很正常。

相信好多人都会解释这个问题,我就不多说什么了。
#3
无名可用2010-11-08 20:20
inputa 函数返回了一个局部变量
#4
jiasenlin2010-11-09 15:30
char str[20]="123";
变为 char str[20]=‘123’;
用单引号
#5
zhanghang1232010-11-13 17:54
return 的应该是一个值,而不是指针。
#6
zhj1232010-11-14 12:24
返回的字符型应该用单引号
#7
ml2325282010-11-14 14:44
inputa函数返回了一个局部变量地址
inputp返回了常量的地址 所以没问题
1