C言語二次元文字配列の詳細


2 D文字配列は、通常、複数の文字列を格納および処理するために使用され、2 D文字配列の各行に1つの文字列を格納できます.
2 D文字配列の定義
2 D文字配列の定義形式は次のとおりです.
char配列名[1次元サイズ][2次元サイズ];
次のようになります.
  • char c[3][10];//3行10列の2次元文字配列c
  • を定義する
    2 D文字配列の初期化
    通常、2 D配列の各行は1つの文字列で初期化されます.例:
     
  • char c[3][8]={{"apple"},{"orange"},{"banana"}};

  • 次のように等価です.
     
  • char c[3][8]={"apple","orange","banana"};

  • 上記の2つの初期化文では、2次元配列の1次元サイズは省略できます.配列cの論理構造は以下の通りである.
     
    0
    1
    2
    3
    4
    5
    6
    7
    c[0]
    a
    p
    p
    l
    e
    \0
    \0
    \0
    c[1]
    o
    r
    a
    n
    g
    e
    \0
    \0
    c[2]
    b
    a
    n
    a
    n
    a
    \0
    \0
     
    この2次元配列の各行c[0]、c[1]、c[2]は、いずれも10要素を含む1次元文字配列であるため、2次元配列の各行は1つの文字列を表すことができる.
    2 D文字教示グループの参照
    2 D文字配列の各要素(文字)は、行および列の下付きを使用して参照できます.たとえば、次のようになります.
     
  • char c[][10]={"apple","orange","banana"};

  • 次は、2 D文字配列要素に対する適切な参照です.
     
  • printf ("%c",c[1][4]);//出力1行4列要素'g'文字
  • scanf ("%c",&c[2][3]);//2行3列要素の
  • 文字を入力します.
  • c[2][0]='B';//2行0列要素
  • に文字を割り当てる
  • printf ("%s",c[1]);//c[1]は2行目の配列名(ヘッダ要素アドレス)でありorange
  • を出力する.
  • scanf ("%s",c[2]);//c[2]行に文字列を入力し、c[2]行のヘッダアドレスから
  • を格納する.
    次に、2 D文字配列要素の不正な参照を示します.
    c[0][0]="A";//行、列の下付き文字は文字型要素であり、文字列付与printf("%c",c[2])は使用できません.//c[2]は3行目のヘッダアドレスであり、文字要素ではないので%cは使用できません
     
    【例1】以下のプログラムを解析し、その実行結果を出力する.
    #include
    int main (void){
    char c[3][5] = {"Apple","Orange","Pear"};
    int i;
    for(i=0;i<3;i++)
    printf ("%s
    ",c[i]); return 0;}

     
    0
    1
    2
    3
    4
    c[0]
    A
    p
    p
    l
    e
    c[1]
    O
    r
    a
    n
    g
    c[2]
    P
    e
    a
    r
    \0
     
     
  • printf ("%s",c[0]);//出力AppleOrangPear
  • printf ("%s",c[1]);//出力OrangPear
  • printf ("%s",c[2]);//Pear

  • 実行結果:AppleOrangPear OrangPear Pear
     
    (c言語中国語網より)http://c.biancheng.net/view/273.html