再看出参---分析GetMemory的错误

来源:互联网 发布:数据库中create table 编辑:程序博客网 时间:2024/06/08 03:00

        先来上一个到处可见的错误程序实例:

#include <iostream>using namespace std;void GetMemory( char *p ){p = (char *)malloc(100);}int main(){char *str = NULL;GetMemory(str);strcpy(str, "hello world" );return 0;}
         我们来看一下错在哪里? 在main中调用GetMemory函数, str做的是入参, 这就有问题了, 既然是入参, 那又怎能指望GetMemory去改变它的值呢? 先把空指针传给p, 又对p进行赋值, 这是为哪般?

         执行GetMemory后, str依然是空指针, 拷贝的时候, 自然崩溃。 修改方法是: 让str做出参(利用引用或者二维指针), 比较easy, 我就不多说了。

0 0
原创粉丝点击