指向函数指针
#include <stdio.h>
#include<string.h>
char *func()
{
char array[10];
return array;
}
int main(void)
{
char *str;
str = func();
strcpy(str,"Hello");
printf("%s",str);
return 0;
}
问:怎么使得输出hello
[解决办法]
不要再函数中返回局部字符串
要想输出hello
char str[10];
strncpy(str, "Hello", strlen("hello"));
[解决办法]
#include <stdio.h>
#include<string.h>
char *func()
{
char *array = malloc(20);//char array[10];是局部变量是不能够返回的。
if(array == NULL)
{
fprintf(stderr, "malloc failed!\n");
exit(1);
}
memset(array, 0, 20);
return array;
}
int main(void)
{
char *str;
str = func();
strcpy(str,"Hello");
printf("%s",str);
free(str);
return 0;
}
这是修改之后的代码,参考一下吧。
[解决办法]
#include <stdio.h>#include <string.h>#include <stdlib.h>char* func(void){ return (char*)malloc(10 * sizeof(char));}int main(int argc, char* argv[]){ char* str = func(); strcpy(str, "Hello"); printf("%s\n", str); free(str); return 0;}
[解决办法]
static char array[10];