双色手拿包钩织方法:这个函数看不懂

来源:百度文库 编辑:高校问答 时间:2024/04/20 23:40:21
#include <iostream>
using namespace std;

void GetMemory(char **p) //为什么用*p不行用**p就可以了?
{
*p = (char *)malloc(100);
}

void main(void)
{
char *str = NULL;
GetMemory(&str); //<-问题str已是地址 在前面加一个&是什么意思 难道是地址的地址?
strcpy(str, "hello world");
printf(str);
}

用**p的原因是因为*p已经是一个指针指向一个地址了,下面的*p = (char *)malloc(100);本是分配空间的,但这样一弄就不是分配空间了,而是重写数据.
&符号是取地址符,就是把str 的地址传入函数,让函数为其分配空间.