#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)
即可。
7 回答5.3k 阅读
3 回答2k 阅读✓ 已解决
4 回答4k 阅读
2 回答3.9k 阅读✓ 已解决
2 回答5.9k 阅读✓ 已解决
2 回答3.2k 阅读✓ 已解决
1 回答3.2k 阅读✓ 已解决
修改了下代码 debug下看看,看完应该就明白怎么回事了: