69,371
社区成员
发帖
与我相关
我的任务
分享
#include <stdio.h>
const int STR_N = 13; //如果你是纯C就改成#define吧
char (*f(void))[STR_N] //加个STR_N指明数组的长度
{
static char a[] = {'H','e','l','l','o',' ','w','o','r','l','d','!','\0'}; //只能定义成char数组
//为了后面能返回它的地址,还得加上static
//其实不要'\0'也可以,反正按数组处理
char (*str)[STR_N] = &a; //如果非要让str保持为指向数组的指针,就得定义它指向的数组的长度STR_N
return str; //如果前面不改成static,这里就会返回被销毁的栈变量的地址
}
int main(void)
{
char (*p)[STR_N] = f();
for (int i=0; i<STR_N; i++) //char数组,循环打吧
{
printf("%c",(*p)[i]);
}
printf("\n");
return 0;
}
#include <stdio.h>
char *f(void)
{
char *str = "hello world";
return str;
}
int main(void)
{
char *p = f();
printf("%s\n",p);
return 0;
}