【发布时间】:2017-08-18 21:13:22
【问题描述】:
我正在尝试通过使用指向包含指向prarr[3][3] 的指针的数组ptr_prarr[3][3] 的指针ptr_ptr_prarr 来操作数组prarr[3][3]。
我想以某种方式将ptr_ptr_prarr 指向ptr_prarr 并使用ptr_ptr_prarr[i][j] 之类的东西访问prarr[i][j] 中的数据。
void main()
{
int prarr[3][3];
int count = 1;
for (int i = 0; i <= 2; i++)
for (int j = 0; j <= 2; j++)
prarr[i][j] = count++;
//printArray(prarr);
int *ptr_prarr[3][3];
for (int i = 0; i <= 2; i++)
for (int j = 0; j <= 2; j++)
ptr_prarr[i][j] = &prarr[i][j];
int n = 1, x = n, y = n;
printf("\nArray Coords:(%d,%d)\nMemory location:%p\nValue:%d",
x, y, ptr_prarr[x][y], *ptr_prarr[x][y]);
int **ptr_ptr_prarr= *ptr_prarr;
printf("\n");
for (int i = 0; i <= 8; i+=3)/* <<--------------------------------- */
{
for (int j = 0; j <= 2; j= (j+1))
printf("%d", (ptr_ptr_prarr[i][j]));
printf("\n");
}
Sleep(20000);
}
我想我已经接近了,但由于某种原因ptr_ptr_prarr 需要包含“
不知何故,我访问了一些错误,任何帮助将不胜感激!
【问题讨论】:
-
指针有点复杂,但你把它弄得更糟了。为什么不简单呢?
-
提示;使用不同的大小可以更好地说明有关 2D 数组的问题,例如
int prarr[2][3]; -
有点难以理解为什么要使用这个指针数组。如果它不仅仅是为了试验指针,你能描述一下你真正想要实现的目标吗?无论如何,
for (int i = 0; i <= 8; i+=3)和ptr_ptr_prarr[i][j]),其中您的竞争程序不包含任何大于[3][3]的数组是可疑的。 -
这实际上只是为了实验。这只是为了充实我对指针和数组的理解。