本帖最后由 gmadong@163.com 于 2014-4-24 21:40 编辑
void GetMemory(char *p,int num) {
p=(char*)malloc(sizeof(char)*num); //在这句前就是在栈中有声明一个变量是p 指向传过来的NULL 执行完这句后就是p指向了别的地方 //简单的就是你传的是指针 但这是值传递 只有通过指针的指针才能改变内容的 } int main() { char *str=NULL; //执行完时在栈中有一个变量是str 指向NULL GetMemory(str,100); //把NULL传给函数 strcpy(str,"hello");
return 0; } 正确的写法: void GetMemory(char **p,int num) { *p=(char*)malloc(sizeof(char)*num); } int main() { char *str=NULL; GetMemory(&str,100); strcpy(str,"hello"); printf("%s\n",str); return 0;
}
|