#include <iostream>
using namespace std;
char* func();
int main() {
char* str;
str = func();
cout<<str;
return 0;
}
char* func() {
char * str;
char p[] = "priyanka is a good girl";
str = p;
cout<<str<<"\n";
return str;
}
给出输出
普里扬卡是一个好女孩priy
我不明白这里发生了什么,为什么输出不完整的数组。我对此有点新意。请帮忙。
答案 0 :(得分:4)
您的函数func()
返回一个指向局部变量的指针,当您尝试访问它时,该指针稍后会导致未定义的行为。
答案 1 :(得分:1)
在func2()
char p[]
中是在堆栈上初始化的局部变量。返回指向堆栈变量的指针是一个坏主意(并且也是未定义的行为),并且我认为你的字符串“priyanka是一个好女孩”在函数返回时被覆盖。