C语言 用一维指针访问多维数组函数
功能:
用于使用一维数组指针形式表示多维数组,可用于当在函数内对多维数组参数进行读写操作
接口说明:
inArrStyle: 多维数样式
nD: 多维数组维数
PosIndex: 索引
用法示例:
有四维数组 int arr[10][10][10][10]
欲表示 arr[4][3][2][1]
则可表示为:
int arrStyle[4] = {10,10,10,10};
int index[4] = {4,3,2,1};
arr[getIndexOfArr(arrStyle, 4, index)]
arr[4][3][2][1] == arr[getIndexOfArr(arrStyle, 4, index)]
备注:
暂时支持不超过4维,不定高维数组待补全
int getIndexOfArr(int* inArrStyle, int nD, int* PosIndex) {
int index = 0;
if (inArrStyle == NULL || PosIndex == NULL)
return -1;
if (nD <= 0 || nD > 4)
return -2;
if (nD == 1) {
return PosIndex[0];
}
else if (nD == 2) {
index = PosIndex[0] * inArrStyle[1] + PosIndex[1];
}
else if (nD == 3) {
index = PosIndex[2] + PosIndex[1]* inArrStyle[2] + PosIndex[0] * inArrStyle[1]* inArrStyle[2];//2*4*3 + 2*3 + 2
}
else if (nD == 4) {
index = PosIndex[3] + PosIndex[0] * inArrStyle[1]* inArrStyle[2]* inArrStyle[3] + PosIndex[1]* inArrStyle[2] * inArrStyle[3] + PosIndex[2]* inArrStyle[3];//2 + 5*5*4*3+4*4*3+3*3
}
else {
//
for (int i = 0;;i++) {
}
}
return index;
}