指针传递的问题!void GetMemory(char *p){p(char*)malloc(100)}void Test(void){char *str NULLGetMe
指针传递的问题!
void GetMemory(char *p)
{
p=(char*)malloc(100);
}
void Test(void)
{
char *str = NULL;
GetMemory(str);
strcpy(str,"helloworld");
printf(str);
}
请问如果把加颜色那句换成这样行不:
char* str="aaa";
这样申请的地址就是str的地址吧?
[解决办法]
一样的,也不行
不在于str传入GetMemory是什么样
而在于GetMemory中申请的内存没有传出来到Test中
[解决办法]
lz 理解有误
改为下面的代码,才能把 malloc 分配的地址传给外面的str
- C/C++ code
void GetMemory(char **p){ *p=(char*)malloc(100);}
[解决办法]
如果lz 知道参数是int时候, 在函数里面修改这个参数, 对外面的不能造成影响.
那么把 char* 也看成一个类型吧.
如果想改变char* p指向的内容, 那么就要char** p或者char*& p
[解决办法]
[解决办法]
malloc分配内存成功时,返回一个指针,该指针指向这块存储空间!!!
[解决办法]
这样也可以:
- C/C++ code
void GetMemory(char *&p){p=(char*)malloc(100);} 