1

ここで初めて、皆さんの多大な助けを借りて C の一部を学ぼうとしています。これはここで基本的な質問になる可能性があります....基本から始めて申し訳ありません。

void main()
{

char* arr[3] = {"baba","tata","kaka"};

char* arr1[3] = {"baba1","tata1","kaka1"};

char* arr2[3] = {"baba2","tata2","kaka2"};

char** array_all[] = {arr,arr1,arr2};

printf("%s\n",*array_all[0]);

//please guide me how to access individual entity(as arr[1], arr1[2],arr3[1])      //from each array using array_all

}
4

2 に答える 2

3

これがまさにあなたが探していたものかどうかはわかりません..しかし、これは私が今のところ理解していることです.

array_all の個々の要素 (要素 arr、arr1、および arr2) にアクセスしたいですか? もしそうなら、あなたがすることは...

array_all[0][i];

i は、アクセスする要素です。

これは、インデックス演算子 ([ および ]) が実際にポインターを逆参照し、指定したポインターをオフセットするためです (整数を追加する、つまりメモリ内で下に移動するなど)。ポインターを整数で追加するとどうなるかがわからない場合は、ポインター演算を読むことをお勧めします。

例えば:

int x[] = { 1, 2, 3 };
// writing x[i] is the same as *(x + i)
int i = 2; // the element you wish to access
*(x + i) = 4;  // set the ith (3rd) element to 4
*(x + 1) = 43; // set the 2nd element to 43

// Therefore...
// x now stores these elements:
// 1, 43, 4

// proof: print out all the elements in the array
for(int i = 0; i < 3; ++i)
{
   printf("x[%i]=%i\n", i, x[i]);
}

また、配列名は実際には配列の最初の要素を指しているため、x[0] と書くことは *x と書くことと同じです。

ああ、1 つ、main は実際には整数の結果を返す必要があります。これは主にプログラムのエラー チェックに使用されます。通常、0 はエラーが発生していないことを意味し、他のすべてのエラー コード (0 以外の番号) はプログラムに関連する特定のエラーであり、選択できます。すなわち

int main()
{
   // e.g. for an error code
   /*
   if(someErrorOccured)
   {
      return SOME_ERROR_OCCURED_RETURN_VALUE;
   }
   */
   return 0; // this is at the end of the function, 0 means no error occured
}
于 2012-07-19T07:39:23.900 に答える
1

これであなたのprintfステートメント行を変更してください..

printf("%s\n",array_all[i][j]);

i の代わりに配列番号を保持し、k の代わりに必要な要素番号を指定します。できます。

于 2012-07-19T07:52:04.053 に答える