回 帖 发 新 帖 刷新版面

主题:求教

#include<iostream>
using namespace std;
char *count_one(){
     char a[]="hello world";
     return a;
     }
int main(){
    char *p=count_one();
    cout<<p<<endl;
    cin.get();
    return 0;
}
请教输出应该是?另外把char a[]="hello world"改成char *a="hello world"输出又是什么?

回复列表 (共2个回复)

沙发

请教输出应该是?
--- 不知道,因为你输出的是一个函数的局部变量,而这个函数已经结束了,所以p指向的内容已经无法保证

改成char *a="hello world"输出又是什么?
--- 不知道,但如果你的编译器不是很追求个性的话,那么大抵输出是 hello world

板凳

char *count_one(){
     char a[]="hello world";
     return a;
     }
一开始,返回出来的a是“hello world”中'h'的地址,故主函数中输出来的也是'h'的地址,即你看到输出来是一个你不认识的符号……

改过之后,*a指向的是“hello world”的地址,故返回出来的也是“hello world”的地址,因为*p指向的是a的地址而且&(*p)和p是等价的;故cout<<p<<endl;

呵呵,讲的有点乱,自己仔细理一下……

我来回复

您尚未登录,请登录后再回复。点此登录或注册