prarr[3][3]
へのポインタを含むptr_ptr_prarr
の配列ptr_prarr[3][3]
へのポインタを使用して配列prarr[3][3]
を操作しようとしています。元の配列から元の配列へのポインタの配列を操作する
ptr_ptr_prarr
〜ptr_prarr
を指し、のようなものを使用して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
は「< < ------------------------を含む行が必要です--------- ":元のデータを複製するために異なる方法で反復する。
どういうわけか、私は何か間違ったところにアクセスしており、何か助けていただければ幸いです!
ポインタは少し複雑ですが、ポインタを最悪にしています。なぜシンプルに行かないの? – haccks
ヒント。 2次元配列に関する質問は、 'int prarr [2] [3]; 'のような異なるサイズを使用することでよく分かります。 – chux
なぜこのポインタ配列を使うのか分かりません。ポインタを試すだけのことではない場合は、実際に達成したいことを記述してください。とにかく、競合プログラムに '[3] [3]より大きな配列が含まれていない' for(int i = 0; i <= 8; i + = 3) 'と' ptr_ptr_prarr [i] [j] ] '疑わしいです。 –