配列とポインターの間に存在する特別な関係を理解しようとしています。つまり、角かっこのない配列名は常に配列の最初の要素を指します。
Linux システムでは、C プログラムでこれを取得します。
char name[7] = "unique";
printf("\nAddress stored of name: %p", name);
printf("\nAddress stored of name: %s", name); //Conflict
printf("\nAddress of name[0]: %p", &name[0]);
//dereferencing the pointer
printf("\nValue of name[0]: %c", *name);
printf("\nValue of name[1]: %c", *(name+1));
出力は次のとおりです。
Address stored of name: 0xbff68131
Address stored of name: unique
Address of name[0]: 0xbff68131
Value of name[0]: u
Value of name[1]: n
//Conflictとしてのコード行の出力を除いて、上記の出力のすべてを理解しています。言い換えれば、配列とポインターの間の特別な関係に従ってnameが&name[0]と同等である場合、フォーマット指定子を (%p から %s に) 変更するだけで配列の実際の値が出力されるのはなぜでしょう。それが本当なら、name、&name[0]、*nameはすべて同等ということですか?
少なくとも (//Conflict) 他の (ガベージ?) 値を出力することを期待しますが、配列の実際の値は出力しません。