#include <stdio.h>
#include <stdlib.h>
#include <string.h>
void getp(char *p)
{
*p = malloc(1000);
}
int main()
{
char *p = NULL;
getp(p);
strcpy(p, "hello");
printf("%s\n", p);
}
以上代码为什么错了?
为甚getp的参数要改为双指针,getp(char **p)?
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
void getp(char *p)
{
*p = malloc(1000);
}
int main()
{
char *p = NULL;
getp(p);
strcpy(p, "hello");
printf("%s\n", p);
}
以上代码为什么错了?
为甚getp的参数要改为双指针,getp(char **p)?
函数getp() 里的 *p = malloc(1000) 是指开1000的内存,并将首地址给 p 指针里的值,因此,要求 *p 也是一个指针(注意这里的*代表取值运算符),因此要求传入的参数是指针的指针。
猜测你代码的意图,应该将getp()函数里改成 p = malloc(1000)即可。
2 回答709 阅读✓ 已解决
3 回答777 阅读
1 回答558 阅读✓ 已解决
1 回答766 阅读
2 回答718 阅读
1 回答815 阅读
1 回答664 阅读
修改了下代码 debug下看看,看完应该就明白怎么回事了: