C语言中**k是什么意思

来源:百度知道 编辑:UC知道 时间:2024/05/18 07:40:20

1.**k是一个指针,他指向*k,而*k也是一个指针,通常我们可以用一个指针指向一个数组的开始位置,所以这里的int **k是定义一个动态二维数组
2.二维数组扩展
二维数组A[m][n],这是一个m行,n列的二维数组。设a[p][q]为A的第一个元素,即二维数组的行下标从p到m+p,列下标从q到n+q,按“行优先顺序”存储时则元素a[i][j]的地址计算为:

LOC(a[i][j]) = LOC(a[p][q]) + ((i − p) * n + (j − q)) * t

按“列优先顺序”存储时,地址计算为:

LOC(a[i][j]) = LOC(a[p][q]) + ((j − q) * m + (i − p)) * t

存放该数组至少需要的单元数为(m-p+1) * (n-q+1) * t 个字节
二维数组又称为矩阵,行列数相等的矩阵称变方阵。对称矩阵a[i][j] = a[j][i],对角矩阵:n阶方阵主对角线外都是零元素

在C语言中,**k 表示一个二级指针。

一级指针*k的值为二级指针**k的地址。


可以通过如下实例来理解二级指针的含义与使用:

int a=5;  // 定义一个int类型的变量a
int *p;   // 定义一个int类型一级指针变量p
int **k;  // 定义一个int类型二级指针变量k
p = &a;   // 使一级指针p指向变量a的地址
k = &p;   // 使二级指针k指向一级指针p的地址
printf("%d", a);    // 输出1