C语言中定义一个函数,变量是指向指针的变量,调用时要怎么调用?

假设在一个程序里定义了一个函数
double fcat(double **x, int y, int z)
{
...
}
main()
{
double a[3][3]={1,2.3,4,5,6,7,8,9};

double *c[3]={a[0],a[1],a[2]};
*c[i]=fact(????,y,z); 这里要调用fact函数要怎么做?
}

首先fact函数返回的是double类型,第一个参数是double型的二维指针.所以是
*c[i] = fact (c,y,z);
因为double *c[3];是二维double指针,
c[i]是一个double一维指针,*c[i]就是double型数据。c是二维指针,可以传过去追问

那如果fact里的第一个变量要应用的是a[3][3]这个函数呢? 二重循环里 用fact(a[i][j],y,z)吗

追答

a[3][3]只是二维数组,不是二维指针。应用a[3][3]会出错。二维指针存储的是指针类型变量,二维数组存储的是double型变量

温馨提示:内容为网友见解,仅供参考
第1个回答  2014-04-26

*c[i]=fact(c,y,z);

示例:

double fcat(double **x, int y, int z)
{
int i, j;
for (i = 0; i < y; i++)
{
for (j = 0; j < z; j++)
{
printf("%lf ", x[i][j]);
}
printf("\n");
}
return 0;
}

int main(int argc, char* argv[])
{
int y = 3, z =3;
double a[3][3]={1,2,3,4,5,6,7,8,9};
    double *c[3]={a[0],a[1],a[2]};
    *c[0] = fcat(c, y, z);
return 0;
}

第2个回答  2014-04-26
(&C,y,z) c是数组的名字也就是首地址,地址的地址就是二级指针,类型相同,参数就能传递函数就能调用
第3个回答  2014-04-26
fact函数返回值是double类型,那么定义一个double类型的变量,直接调用函数就行
double i;
i=fact(参数1,2,3);
第4个回答  2014-04-26
*c[i]=fact(c,y,z);
相似回答