用指针访问一维数组
用指针访问二维数组
用指针访问三维数组
一、 用指针访问一维数组
//代码
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]