#include <stdio.h>
#include <stdlib.h>
#include <string.h>
void fun(char *p)
{
p=(char *)malloc(100);
}
int main(int argc, char const *argv[])
{
char *src=NULL;
fun(src);
strcpy(p,”hello world”);
printf(“%s\n”,src );
return 0;
}
#include <stdlib.h>
#include <string.h>
void fun(char *p)
{
p=(char *)malloc(100);
}
int main(int argc, char const *argv[])
{
char *src=NULL;
fun(src);
strcpy(p,”hello world”);
printf(“%s\n”,src );
return 0;
}
解决方案
40
一 语法上把strcpy(p,”hello world”);改成strcpy(src,”hello world”);这里应该是笔误吧,否则无法编译.
二 fun函数中你的型参是char*,你传得实参是src的一个副本,因此src不会只想你分配的那100个字节
要这样改:
二 fun函数中你的型参是char*,你传得实参是src的一个副本,因此src不会只想你分配的那100个字节
要这样改:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
void fun(char** p)
{
*p=(char*)malloc(100);
}
int main(int argc, char const *argv[])
{
char *src=NULL;
fun(&src);
strcpy(src,"hello world");
printf("%s\n",src );
return 0;
}
结果:
hyman@hyman-laptop:~/test$ gcc -g test.c
hyman@hyman-laptop:~/test$ ./a.out
hello world