没有得到正确的字符数组输出

时间:2012-11-08 18:56:27

标签: c++ arrays char-pointer

  

可能重复:
  Pointer to local variable

#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

我不明白这里发生了什么,为什么输出不完整的数组。我对此有点新意。请帮忙。

2 个答案:

答案 0 :(得分:4)

您的函数func()返回一个指向局部变量的指针,当您尝试访问它时,该指针稍后会导致未定义的行为。

答案 1 :(得分:1)

func2() char p[]中是在堆栈上初始化的局部变量。返回指向堆栈变量的指针是一个坏主意(并且也是未定义的行为),并且我认为你的字符串“priyanka是一个好女孩”在函数返回时被覆盖。