用指针操作多维数组

来源:互联网 发布:软件体系结构原理 编辑:程序博客网 时间:2024/05/17 00:13
/// @file exam_test.c/** @brief */#include <stdio.h>#include <stdlib.h>int main(){    /**    数组定义的格式 type ary[m] = {...};    ary[n] address is ?    addr = ary[0] addr + sizeof(type)*n    */    /// 一维数组的例子    int ary[5] = {1,2,3,4,5};    int iAddr_ary_3 = (int)&ary[0] + sizeof(int) * 3;    int iContent = *((int*)iAddr_ary_3); ///< iContent is 4 , is ary[3]    /// 多维数组    #define ARY_ROW 3    #define ARY_COL 4    /// type is int    int iAry[ARY_ROW][ARY_COL] = {        {11, 12, 13, 14},         {22, 22, 23, 24},        {32, 32, 33, 34}};    /// 假设要访问的数组元素位置为 iAry[2][3]    int iObjRow = 2;     int iObjCol = 3;    int iObjContent = 0;    int iAddr = (int)&iAry[0][0] + sizeof(iAry[0]) * iObjRow + sizeof(int) * iObjCol;    iObjContent = *((int*)iAddr); ///< iObjContent is 34, is iAry[2][3]    /// 求二维数组元素的公式推导    iAddr = (int)&iAry[0][0] + sizeof(iAry[0]) * iObjRow + sizeof(int) * iObjCol;    iAddr = (int)&iAry[0][0] + sizeof(int) * ARY_COL * iObjRow + sizeof(int) * iObjCol;    iAddr = (int)&iAry[0][0] + sizeof(int) * (ARY_COL * iObjRow + iObjCol);    iObjContent = *((int*)iAddr); ///< iObjContent is 34, is iAry[2][3]    /// 在不知道多维数组维数时, 可以使用下面方法求多维数组元素值    iAddr = (int)&iAry[0][ARY_COL * iObjRow + iObjCol];    iObjContent = *((int*)iAddr); ///< iObjContent is 34, is iAry[2][3]system("pause");return 0;}

0 0
原创粉丝点击