读书人

关于指针有关问题

发布时间: 2012-02-12 17:16:34 作者: rapoo

关于指针问题
[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*
[解决办法]

探讨

引用:
char *p,这个*p不能被修改,第二种才是正确的

为什么不能修改啊?

读书人网 >C语言

热点推荐