double ** int函数参数

时间:2018-12-14 17:33:12

标签: function pointers

有人可以解释一下为什么参数有双“ **”吗?就像,我知道这等效于C ++中的“按引用”,但请提供更多解释。

 int crearevect(int **v)
{
    int nr,i;
    scanf("%d",&nr);
    *v=(int *)(malloc(nr*sizeof(int)));
    for (i=0; i<nr; i++)
        printf("%p ",((*v)+i));
    printf("%p",v);
    return nr;
}
// v[i] = *(v+i)
// *(v)[i] = *(*(v)+i)



void creareMATRICE(int ***a, int *n, int *m)
{
    scanf("%d",n);
    scanf("%d",m);
    *a=(int **)(malloc(*n*sizeof(int)));
    int i,j;
    for (i=0; i<*n; i++)
        (*a)[i]=(int *)(malloc(*m*sizeof(int)));
    for (i=0; i<*n; i++)
        for (j=0; j<*m; j++)
            scanf("%d",&(*a)[i][j]);
    return;
}

1 个答案:

答案 0 :(得分:0)

    C中的
  • 是指指针。 *表示保存内存地址的变量,类似地**表示保存内存地址的内存地址的变量,***依次类推。您可以从https://www.tutorialspoint.com/cprogramming/c_pointers.htm或任何其他在线参考中了解有关指针的更多信息。但通常,您可以将*与可用于寻址1D数组的变量(v [i] = *(v + i))链接,将**与可用于寻址2D数组的变量(v [i] [ j] = (v + i)+ j)),依此类推。