我可以用单个索引索引多维数组吗?
前任:
在内存中,多维数组像单个数组一样被索引(例如在矩阵 2x2 中,matrix[1][1] 是数组的第四个元素,“matrix[3]”)是否有系统自动使用这种表示法?我想写矩阵[3]而不是矩阵[1][1]:可能吗?
我可以用单个索引索引多维数组吗?
前任:
在内存中,多维数组像单个数组一样被索引(例如在矩阵 2x2 中,matrix[1][1] 是数组的第四个元素,“matrix[3]”)是否有系统自动使用这种表示法?我想写矩阵[3]而不是矩阵[1][1]:可能吗?
只需使用@Jack 的答案添加一个工作示例:对于行专业和语言C
(不是 c++),但事情是一样的!
#include<stdio.h>
#define R 2
#define C 2
int main(){
int data1[R*C]={ 1, 2,
3, 4
};
int data2[R*C]={ 3, 5,
7, 8
};
int result[R*C]={0 };
int r,c;
for(r=0; r< R ; r++){
for(c=0; c< C ; c++){
result[r*C + c]= data1[r*C + c] + data2[r*C + c];
}
}
printf("\nMatrix SUM\n");
for(r=0; r< R ; r++){
for(c=0; c< C ; c++){
printf("%-3d ",result[r*C + c]);
}
printf("\n");
}
return 1;
}
输出:
Matrix SUM
4 7
10 12
你可以看到它在copade工作
您可以使用宏来保持索引表达式干净,如下所示
#define INDEX(r, c) r*C + c
使用如下宏:
data2[INDEX(r,c)];
您是否注意到虽然我的示例中的所有数组都是一维的,但我的编码风格就像我正在使用二维矩阵一样。这并不神奇,但二维数组在编译器级别以类似的方式实现。