#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