今天遇到了一个C/C++语言问题:
如下:
——————————————————————————————————————————-——
#include <stdio.h>
#include <iostream>
using namespace std;
void fun(char *p)
{
p = (char *)malloc(100);//由于p是局部变量,所以fun函数结束,p便被销毁
}
int main(int argc, char *argv)
{
char *str = NULL;
fun(str);//str一直都是NULL;
strcpy(str, "Hello world");
cout << str <<endl;
return 0;
}
————————————————————————————————————————————
结果编译出来没有问题,但是在执行的时候程序奔溃了,这是由于strcpy(str, "Hello world");将"Hello world"复制给str指针,但是str指针为空指针导致。为什么str会是空指针呢?还有这么开辟空间之后并返回给main()中的str指针呢?
这是由于fun()函数中的p指针只是str的一个副本,作为形参,虽然给p开辟了内存空间并指向这块空间,但是fun()函数结束p就被销毁了。
怎么样才能给str开辟空间呢?
代码如下:
—————————————————————————————————————————————