c++ 指针访问数组

 用指针访问一维数组
   用指针访问二维数组
   用指针访问三维数组

一、  用指针访问一维数组    
 //代码
    int i=0;
    int a[2]={11,22};
    int *p=&a; //int *p=&a[0];
    printf("%d\n",*p);
    p++;
    printf("%d",*p);    
//代码
    int i=0;
    int a[2]={11,22};
    int *p=&a; //int *p=&a[0];
    for(i=0;i<2;i++,p++)
    {
     printf("%d\n",*p);
    }    
//代码
    int i=0;
    int a[2]={11,22};
    int *p=&a; //int *p=&a[0];
    for(i=0;i<2;i++)
    {
     printf("%d\n",p[i]);
    }    

 

 二、  用指针访问二维数组        
     
 //代码
    int i,j;
    int a[2][3]={11,22,33,
               31,32 ,83}; 
    //int (*p)[5]=&a[0][0];//(5*1+0)*4 错误的
    int (*p)[3]=&a[0][0];//(3*1+0)*4
    for (i=0;i<2;i++)
        for (j=0;j<3;j++)
    {
             printf("%d\n",p[i][j]);
    }
   printf("%d,%d", p[1][0], a[1][0]);    
三、  用指针访问三维数组    
    //代码
    int a[2][3][4]={
                   {{ 1, 2 , 3 , 4}   , {5 , 6 , 7 , 8}  ,{ 9,10,11,12}},
                  {{13,14,15,16}  , {17,18,19,20} , {21,22,23,24}}
                 };

#include <stdio.h>
#include <string.h>
 
int main(void)
{
int a[2][3][4]={
                   {{ 1, 2 ,3 ,4}   ,  {5, 6, 7, 8}  ,{ 9,10,11,12}},
                   {{13,14,15,16}   ,  {17,18,19,20} ,{21,22,23,24}}
                 };
int (*p)[3][4]=(void*)0x12ff04;//0x12ff04
int i,j,k;
printf("%x\n",&a);

for (i=0;i<2;i++)
{  
    for (j=0;j<3;j++)
    {
        printf("{");
            for (k=0;k<4;k++)
            {
                printf("%d,",p[i][j][k]);
            }
    printf("},");
    }
    printf("\n");
}
    getchar();

    return 0;
}


小结: 
  访问 int  a[x][y][z][i][j]的指针 定义为 int  (*p)[y][z][i][j]

 

posted @ 2016-11-30 15:33  whzym111  阅读(4021)  评论(0编辑  收藏  举报