关于指针问题
[code=C/C++][/code]
void GetMemory(char *p, int num)
{
*p = (char *) malloc(sizeof(char) * num);
}
int main( void )
{
char *ch = NULL;
GetMemory(&ch, 100);
return 0;
}
[code=C/C++][/code]
void GetMemory(char **p, int num)
{
*p = (char *) malloc(sizeof(char) * num);
}
int main( void )
{
char *ch = NULL;
GetMemory(&ch, 100);
return 0;
}
这两个有什么区别?为什么第一种会出问题?
[解决办法]
第一种 *p 的类型是char, 你给它传了个char *。然后就错了。
第二种 *p 的类型是char *, 你给它传了个char *。然后就对了。
[解决办法]
[Quote=引用:]
[code=C/C++][/code]
void GetMemory(char *p, int num)
{
*p = (char *) malloc(sizeof(char) * num);
}
int main( void )
{
char *ch = NULL;
GetMemory(&ch, 100);
return 0;
}
[code=HTML]……
[/Quote
第一种:
1、红色标注一行*p 为指针指向的一个字符,而等号右边返回一个字串串地址,本身就不匹配。
应当为 p = (char *) malloc(sizeof(char) * num);但是分配的内存空间不能返回到main函数中。
2、函数调用传递参数同样不匹配,将char** 传递给了char*
[解决办法]