C函数调用有关问题

C函数调用问题
请教大家一个问题,一般函数返回值都是一个数。
如果需要,如何将整个数组返回呢?
例如(Cx,Cy,Cz)=cir(RR[n_theta],theta[n_theta]);
想要返回的Cx,Cy,Cz都是三维数组,在自定义函数里如何声明,主函数里如何调用呢?
不甚感激~C函数调用有关问题
C 函数调用

------解决方案--------------------
返回单指针(三维数组的首地址)就可以了,最好再附带维数信息,可以考虑所有返回信息统一放在结构体里,不过你的数组应该是动态开辟的空间才可以,外部调用完后需要负责释放函数开辟的空间
------解决方案--------------------
对于函数除进程创建外返回值不大于一个,但是可以对这个值做变通达到返回多值的效果。如你可以将其打包为结构体,也可以开辟成数组返回指针等等。我觉得没必要帮你写代码了吧。
------解决方案--------------------
使用结构体。 
------解决方案--------------------
用指针吧。C就这么点好处,不用不浪费了
------解决方案--------------------
当返回的参数超过1个的时候就可以考虑用结构体了。
------解决方案--------------------
仅供参考
//在堆中开辟一个3×4×5的3维int数组
#include <stdio.h>
#include <malloc.h>
int ***p;
int i,j,k;
void main() {
    p=(int ***)malloc(3*sizeof(int **));
    if (NULL==p) return;
    for (i=0;i<3;i++) {
        p[i]=(int **)malloc(4*sizeof(int *));
        if (NULL==p[i]) return;
        for (j=0;j<4;j++) {
            p[i][j]=(int *)malloc(5*sizeof(int));
            if (NULL==p[i][j]) return;
        }
    }
    for (i=0;i<3;i++) {
        for (j=0;j<4;j++) {
            for (k=0;k<5;k++) {
                p[i][j][k]=i*20+j*5+k;
            }
        }
    }
    for (i=0;i<3;i++) {
        for (j=0;j<4;j++) {
            for (k=0;k<5;k++) {
                printf(" %2d",p[i][j][k]);
            }
            printf("\n");
        }
        printf("---------------\n");
    }
    for (i=0;i<3;i++) {
        for (j=0;j<4;j++) {
            free(p[i][j]);
        }
        free(p[i]);
    }
    free(p);
}
//  0  1  2  3  4
//  5  6  7  8  9
// 10 11 12 13 14