2012-01-04 14 views
0

へのポインタを使用して2次元配列のコンテンツにアクセスしないと私ははどのように我々は、私は2次元配列を持つ配列

main() 
{ 
    int a[][4]={{2 ,0 ,0 ,2},{41 ,0, 0, 9}}; 

    int (*p)[4]=a; 
    printf("%d",*p[0]); 
    } 
の下にこのような配列のものにポインタを使用して、この配列の特定の要素にアクセスすることを望んでいました

これは私にIst 1-d配列の最初の要素を与えますが、今度は配列へのポインタを使って1-d配列の2番目の要素にアクセスしますか?

+0

* p [1]それを行う必要があります – bph

+0

いいえ私はそれを試していませんそれは私に2番目の2次元配列の最初の要素を与える –

答えて

1

あなたは、単にこのようなあなたの2D配列の要素にアクセスすることができる:

printf("%d", a[0][1]); /* prints second item of first array */ 
+0

しかし、私はそれをポインタ –

0

要素は、対応する行番号と列番号を使用してアクセスされます。

uは、上述した2次元配列で を最初行の第2要素にアクセスする必要がある場合、あなたは

のprintf( "%dの"、[2] [1])を使用することができます。

0
int a[2][4]={{2 ,0 ,0 ,2},{41 ,0, 0, 9}}; 
int (*p)[4]=a; 

for (i = 0; i < 2; i++) 
    for (j = 0; j < 4; j++) 
     printf("%d\n", p[i][j]); 

それはaだったかのようにあなたはpで配列の要素にアクセスすることができます。 その理由は、値コンテキストでaという名前を使用すると、その型はすでにint (*)[4]であるため、pと同じ型であるためです。

Cのp[i][j]フォームは、*(*p + i) + j)に相当することに注意してください。

1

a[x][y]*(a+x*4+y)にコンパイルされます。