する#include <stdio.hに> する#include < 文字列・H> int型のmain() { int型 [ 3 ] [ 5 ]。 int型I、J。 int型の温度= 0 ; 用(i = 0 ; iは< 3 ; iは++ ) { ため(J = 0 ; J < 5 ; J ++ ) { [I] [J] = TEMP ++ 。 } } のために(i = 0 ; iが< 3 ; iは++ { ) ため(J = 0 ; J < 5 ; J ++ ) { のprintf(" [I] [J] =%Dを\ n " 、[I] [J])。 } } のprintf(" :%のD、A + 1%Dを\ n "、A + 1 )。 printf(" &:%のD&(A + 1):%Dを\ n "、A + 1 )。 リターン 0 ; }
結果:
ポインタステップの二次元アレイである20(* 5 4:5 * int型4ビット)
する#include <stdio.hに> する#include < 文字列・H> int型のmain() { int型 [ 3 ] [ 5 ]。 int型I、J。 int型の温度= 0 ; 用(i = 0 ; iは< 3 ; iは++ ) { ため(J = 0 ; J < 5 ; J ++ ) { [I] [J] = TEMP ++ 。 } } のための(i = 0 ; iは< 3 ; iは++) { ため(J = 0 ; J < 5 ; J ++ ) { のprintf(" [I] [J] =%Dを\ n " 、[I] [J])。 } } { INT(* pArray)[ 5 ]。 pArray = A; 用(i = 0 ; iは< 3 ; iは++ ) { ため(J = 0 ; J < 5 ; J ++ ) { のprintf(" pArray [I] [J] =%d個の\ n "、pArray [I] [J] ); } } } のprintf(" :%のD、A + 1%Dを\ n "、+ 1 )。 printf(" &:%のD&(A + 1):%Dを\ n "、A + 1 )。 リターン 0 ; }
コンパイルし、正常に実行。
多次元配列の性質は、ポインタ名==「ステップ、一次元の長さの配列です。
最初のアドレス(A + i)はi番目の行を表します。
*(A + I)は、i番目の行のアドレスの最初の要素へのポインタの代表
*(a+i)+j 代表a[i][j]元素
最初の行アドレスの最初の要素と最初の行のアドレスが重複しています
*(A + I)+ J == [I] [J]