数组在作为函数返回值或者函数参数时,实际上只作为指针来返回或者传递的。因此返回值用指针数据类型。比如下面的代码:
int g_a[4] = {1,2,3,4};
int * retn_arrary() //返回值用指针类型即要。
{
return g_a;
}
C语言里无法返回数组,返回指针倒是可以,但是返回一个指向局部变量的指针没有任何意义
#include
#include
char *func(const char *s)
{
char *p=(char *)malloc(sizeof(char)*strlen(s));
strcpy(p,s);
return p;
}
int main(void)
{
char *s=func("hello world");
puts(s);
return 0;
}
返回数组绝不可能,跟数组作为参数的情况一样
几种变通办法:
返回成员是数组的结构体
返回指向静态数组的指针
让指向数组的指针和数组长度作为参数,把要返回的东西memcpy到作为参数的指针指向的数组中
函数不须用的return就能直接返回数组的,
void fun(char x[])
{x[0]='a';}
main()
{char a[10]="12345";
void fun(char x[]);
fun(a);
printf("%s\n",a);
}