zoukankan      html  css  js  c++  java
  • 指针访问二维数组的几种常用方法

    内容皆是从网络上搜索得到,写在这里备忘。

    <一>因为二维数组在内存上是按照逐行顺序排列的,所以也可以看成是一维数组,这样访问

    1 #include <stdio.h>
    2 int main(void) 
    3 {
    4    int x[2][2] = {{1,2},{3,4}};
    5    int * y = (int *) x;
    6    int i = 0;
    7    for(i = 0; i < 2 * 2; i++) printf("%d	", y[i]);
    8    return 0;
    9 }

    <二>自己计算偏移量访问

     1 int main()
     2 {
     3         int iArray[2][3] =        {{1,2,3},{4,5,6}};
     4         int *pArray = NULL;
     5 
     6         pArray = iArray;
     7         
     8         printf("array[0][0] = %d
    ", *pArray);
     9         printf("array[1][2] = %d
    ", *(pArray + 1 * 3 + 2));
    10                 
    11         return 0;
    12 }

    <三>用指向数组的指针来访问二维数组的元素

     1 int main()
     2 {
     3         int iArray[2][3] =        {{1,2,3},{4,5,6}};
     4         int (*pArray)[3] = NULL;
     5 
     6         pArray = iArray;
     7         
     8         printf("array[0][0] = %d
    ", pArray[0][0]);
     9         printf("array[1][2] = %d
    ", pArray[1][2]);
    10                 
    11         return 0;
    12 }

    <四>指向指针的偏移

     1 const int row = 2, col = 3;  
     2 int main()  
     3 {  
     4     int a[6][9];
     5     printf("%d",a[row][col]);  
     6     *(*(a+row)+col) = 10;  
     7     printf("%d",a[row][col]);
     8 
     9     return 0;  
    10 } 

    <五>一种常用的用法,我用来存储图像,比较方便

     1 int main()
     2 {
     3          int **img = NULL;
     4          int width = 64, height = 64;
     5          int i = 0, j = 0;
     6 
     7          img = (int **)malloc(sizeof(int *)*height);
     8          for (i = 0; i<height; i++)
     9          {
    10                    img[i] = (int *)malloc(sizeof(int)*width);
    11           }
    12 
    13           for (i = 0; i<heiht; i++)
    14           {
    15                   for (j = 0; j<width; j++)
    16                   {
    17                          printf("%d ",img[i][j]);      //这里
    18                    }
    19            }
    20 
    21            return 0;
    22 }

    <六>一种错误的用法,注意!

     1 #include <stdio.h>
     2 
     3 int main()
     4 {
     5         int iArray[2][3] =        {{1,2,3},{4,5,6}};
     6         int **pArray = NULL;
     7 
     8         pArray = iArray;
     9         
    10         printf("array[0][0] = %d
    ", pArray[0][0]);
    11         printf("array[1][2] = %d
    ", pArray[1][2]);
    12                 
    13         return 0;
    14 }

    转载请注明出处:http://www.cnblogs.com/rongfangliu/p/howtousePoint.html

  • 相关阅读:
    正则表达式--hdu2206ip匹配
    win7查看隐藏分区
    我购买byd的几点逻辑
    html5笔记
    机器学习
    Popular Cows
    武大OJ 574. K-th smallest
    武大OJ 622. Symmetrical
    [HAOI2011]防线修建
    1185: [HNOI2007]最小矩形覆盖
  • 原文地址:https://www.cnblogs.com/rongfangliu/p/howtousePoint.html
Copyright © 2011-2022 走看看