1

可能重复:
指向局部变量的指针

#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;
}

给出输出,

普里扬卡是个好女孩

偷窥

我不明白这里刚刚发生了什么,为什么给出一个不完整的数组作为输出。我对此有点陌生。请帮忙。

4

2 回答 2

4

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

于 2012-11-08T18:58:09.293 回答
1

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

于 2012-11-08T19:05:38.880 回答