c语言返回值类型有哪些?

C语言中函数能否以指针数组或者数组指针作为返回值返回至主函数

是可以的 但是如果返回的指针指向的是局部变量的话可能就会出现一些问题

 int *test()
{
    int a[10];
    for(int i=0; i<10; i++) a[i] = i;
    return a;
}


int main()
{
    int *p = test();
    for(int i=0; i<10; i++) printf("%d\n,p[i]);
}

向上面这个输出的结果就不会是0123456789,因为局部变量的生命周期到函数作用完后,在返回主函数时局部变量(例中的a[])被释放掉了 所以其实这时的p还是一个野指针

int *test(int *a)
{
    for(int i=0; i<10; i++)
    {
        a[i] = i;
    }
    return a;
}
int main()
{
    int a[10];
    int *p = test(a);
    for(int i=0; i<10; i++) cout<<p[i]<<endl;
}


但是如果像这样就会如愿输出0123456789,不过如果是C++的话实现上面这种情况比较推荐使用引用

懂了,如果要对数组修改,最好还是在主函数中定义,以指针的形式访问修改
但是这个不是我的问题的重点
我的意思是能否 使一个指针数组,或者一个行指针作为返回值

int *p[3] shuzu(int a,int *b)
或者是
int (*p)[3] shuzu (int a,int *b
这种形式作为函数的返回值

return的返回值可以是数组,也可以是指针,指针数组是数组,数组指针是指针。

http://blog.csdn.net/jhcconan614/article/details/53965960

其实我个人感觉就是无论是指针数组,还是数组指针,到了return都能返回。首先第一个指针数组,既然是数组的话,return就会返回它的地址,也就是这个数组第一个元素的地址。第二个数组指针,既然是指针指向一个数组,里面是一个地址,它也能做返回值。