这个行
char * f(char *p)
{
p=(char*)malloc(100);
return p;
}
int main(int argc, char* argv[])
{
char * str=NULL;
str=f(str);
strcpy(str,"hello world");
printf("%s",str);
return 0;
}
这个则不行
void * f(char *p)
{
p=(char*)malloc(100);
}
int main(int argc, char* argv[])
{
char * str=NULL;
f(str);
strcpy(str,"hello world");
printf("%s",str);
return 0;
}
我这还有个
int main(int argc, char* argv[])
{
char str[100];
f(str);
strcpy(str,"hello world");
printf("%s",str);
return 0;
}
最低级趣味的是我改成(被人评价为多次一举):
void * f(char *p)
{
p=(char*)malloc(100);
}
int main(int argc, char* argv[])
{
char str[100];
f(str);
strcpy(str,"hello world");
printf("%s",str);
return 0;
}
最终能说明问题的是
void f(char **p)
{
(*p)=(char*)malloc(100);
}
int main(int argc, char* argv[])
{
char *str=NULL;
f(&str);
strcpy(str,"hello world");
printf("%s",str);
return 0;
}
阅读(1440) | 评论(0) | 转发(0) |