GetMemory那一题的理解

#include "stdafx.h"
#include <iostream>
void GetMemory(char *p,int num)
{
    p = (char*)malloc(sizeof(char)*num);
}
void GetMemory1(char **p,int num)
{
    *p = (char*)malloc(sizeof(char)*num);
}
int _tmain(int argc, _TCHAR* argv[])
{
    char *str = NULL;
    GetMemory(str,100);
    GetMemory1(&str,100);
    strcpy(str,"hello");
    return 0;
}

对于GetMemory

image

并没有改变str的指向,这是因为p是str的一个副本,不能代表str,所以运行GetMemory(str,100); 时会报错。

对于GetMemory1,利用了指向指针的指针

image

p中存放的是str的地址,*p实际上就是str的引用,那么对*p的修改实际上就是对str的修改,那么运行GetMemory1(&str,100); 就不会报错。

posted @ 2013-08-27 21:07  immars!  阅读(278)  评论(0编辑  收藏  举报