char *
Cでは文字列です。
array
宣言されている変数の名前です。
[]
配列であることを示します。
{ "something1", "something2", "something3" }
配列の内容を初期化しています。
要素へのアクセスは次のように行われます。
array[0]
最初の要素-「something1」を与えます。
array[1]
2番目の要素-「something2」を与えます。
等
ノート:
コメントで指摘されているように、char *
技術的には文字列ではありません。
へのポインタchar
です。次のように、メモリ内の文字列を視覚化できます。
<-------------------------->
..134|135|136|137|138|139|..
<-------------------------->
'H'|'e'|'l'|'l'|'o'|'\0'
<-------------------------->
このメモリブロック(位置134〜139)は、文字列を保持しています。
例えば:
array[0]
実際には、「something1」の最初の文字へのポインタを返します。
文字が順番にメモリ内にあるという事実を利用して、さまざまな方法で文字列の残りの部分にアクセスします。
/* ch points to the 's' */
char* ch = array[0];
/* ch2 points to the 'e' */
char* ch2 = ch + 3;
/* ch3 == 'e' */
char ch3 = *ch2;
/* ch4 == 'e' */
char ch4 = *(ch + 3);
/* ch5 == 'e' */
char ch5 = ch[3];