问题描述
- 这个指针数组我已经晕菜了
-
#include
#include
void 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 * pA=A[0][0]; /*为指针变量赋值*/ for(int i=0;i<2;i++) /*第一维*/ for (int j=0;j<3;j++) /*第二维*/ for(int k=0;k<4;k++) /*第三维*/ printf("%d ",*(pA+i*3*4+j*4+k)); /*遍历输出*/ pA=A[0][0]; /*使pA重新指向数组开头*/ printf("n"); for(int m=0;m<sizeof(A)/sizeof(int);m++) { printf("%d ",*pA); pA++; } getch(); }
解决方案
int x = (int)(int *)&A[2][3][4];
加上这行,看的很清楚,那个值是地址。
解决方案二:
右击可以选择十六进制或十进制切换。
A[2][3][4]应该是个随机的值。反正是越界的东西,你也不用,不必专研。
解决方案三:
c/c++中数组下标是从0开始的,A[2][3][4]是个随机值。你能正确访问的范围是 000~233,知道吗?
时间: 2024-09-20 00:30:20