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
并没有改变str的指向,这是因为p是str的一个副本,不能代表str,所以运行GetMemory(str,100); 时会报错。
对于GetMemory1,利用了指向指针的指针
p中存放的是str的地址,*p实际上就是str的引用,那么对*p的修改实际上就是对str的修改,那么运行GetMemory1(&str,100); 就不会报错。
From: immars 欢迎转载,但请尊重作者劳动,转载请注明出处!