首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

关于指针有关问题

2012-02-12 
关于指针问题[codeC/C++][/code]void GetMemory(char *p, int num){*p (char *) malloc(sizeof(char) *

关于指针问题
[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不能被修改,第二种才是正确的

为什么不能修改啊?

热点排行