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;

}

全部评论

相关推荐

点赞 收藏 评论
分享
牛客网
牛客企业服务