C语言数据结构的一个基本问题

2024-12-26 11:14:07
推荐回答(2个)
回答1:

1 int read_2D_Array(int **array, int i, int j, int column)
2 { //i row j column ,总行数为column
3 return((*(int*)array + i*column + j));
4 }
以上函数的参数第一行的int **array是函数参数这个参数说明该函数参数列表一接收的数据类型为int ** 型的变量 也就是指向int*型指针变量的指针变量
那么return((*(int*)array + i*column + j));
这里涉及到运算符的优先级别 可以自己看书
1.由于()运算符此时最高所以先算
*(int*)array + i*column + j

2. 由于()这里是(数据类型)强制转换运算符运算符此时最高所以先算
(int*)array

3.以下表达式中*运算符(指针运算符)此时级别最高所以取出array指向的内存空间
由于这里的array已经在上一步中强制转换为int*类型了所以*array就是取出arry指向的内存空间的值我们假设是3
*array + i*column + j

4 以下表达式中*(乘号)运算符的优先级别最高
假设i = 5,colunm = 1,j = 2;
4 + i*column + j
4 + 5 + 2
把结果11return给调用函数
我想你可能是对运算符的优先级别有不明白的地方。或者指针不明白了。
包含几个知识点:运算符优先级别 函数调用 函数参数 数组
二维指针数组 和指针的关系
这个一句两句讲不清楚
以上重点讲解优先级

回答2:

结合注释来看,该语句含义为 返回二维数组array中第i行第j个元素的值
另外,这里边以column为总行数容易引起歧义(column一词原意为“列”)。