c++中如何用指针表示一二三维数组元素和元素地址值

大神,请分析下,c++中如何用指针表示一二三维数组元素和元素地址值
最新回答
小乀奶嘴

2024-11-07 07:04:39

答非所问,楼上均是 Ctrl V党。指针指向地址,内存地址,也就是说指针就是地址。
1维数组: int a[3],a就是首元素的地址,也就是指针。所以元素可以表示成*(a+0),*(a+1),*(a+2);
元素地址值:a,a+1,a+2.
2维数组: int a[3][3],元素:a[0][0]=*(a[0]+0)=*(*(a+0)+0) ……a[i][j]=*(*(a+i)+j)
元素地址值:*(a+0)+0……*(a+i)+j;
3维数组:int a[3][3][3],在外面套一个*()就是了。*(*(*(a+0)+0) +0)……a[i][j][k]=*(*(*(a+i)+j)+k)
元素地址值:去掉*()就是了:*(*(a+i)+j)+k
梦似曾见

2024-11-07 02:49:46

int a[10]; int *b; b=a; 然后a[i]和b[i]是一样的
int a[10][8]; int (*b)[8]; b=a; 然后a[i][j]和b[i][j]是一样的,注意括号和中括号内的数,中括号内的数与第二位相同。如:int c[3][4]; int (*d)[4]; d=c;
int a[7][8][9]; int (*b)[8][9]; b=a; 然后就有a[i][j][k]和b[i][j][k]一致

指针必须有声明数据类型,指针里面的数都是地址,指向的地址里面存储数据,所以给指针赋值必须是地址才行,并且同类型的数据的地址赋值给同类型的指针。
就像分地,地有耕地、建筑用地、池塘等多种类对应char、int、double等数据类型,像char a;int a;float b[4]; 就像给你分定了某块地,地里有什么没有确定;但char a[]="abcdefg"; 则是分地时已经确定了,地里面是什么,但是地里面的东西可以改:a[2]=z; 分好的地里面的东西都可以修改的,原来没有确定什么东西的,但是耕地只能种菜建筑用地只能建房,像char里面的都当做字符,int里面的都当整形数。指针则像一个铭牌,定义一个指针就像给你一个铭牌,char *a;就定义了一个铭牌,但上面的内容没有初始化,也没有确定,里面的内容无意义;铭牌上可以写一个分好的地得地址,例如前面分地:char a[]="abcdefg"; 然后我们再给个铭牌 char *b=a; 这样b是个铭牌,上面写了a这块地得地址了,b就与a具有同样地效果了,但是b还可以改为指向别处的地址,但a却是定死的,不可更改位置,但a中的数据可以改。
骑猪Δ追阳光

2024-11-07 00:34:09

int a[4][5],*p[4],i; //p表示
指针数组

for( i=0;i<4;i++ )
p[i]=a[i];
/*有了这个定义后,指针数组p中的每一个指针分别指向了
二维数组
a每一行的首地址,以后通过p就可以访问a */
访问格式:p[i][j] , (*(p+i))[j] , *(*(p+i)+j) , *(p[i]+j) 都表是a[i][j]
eg: p[1][1]=1; //相当于a[1][1]=1;
追问
如何用指针表示三维数组元素和元素地址值? 谢谢
追答
char m[H][6][32];
char ***p=NULL;
p=m;
能看懂不?