次のコードのccは、配列cのベースアドレスを保持していますか、またはアルファベット「H」のアドレスを「Hello」から保持していますか?答えがベースアドレスである場合、cC++を実行した後にccが8バイト増分するのはなぜですか?なぜなら、2つのポインタを保持しているはずだからです。配列のあいまいさのベースアドレス
void foo(char *cc[])
{
printf("%x\n",cc);
cc++;
printf("%x\n",cc);
}
int main()
{
char *c[] = {"Hello","World"};
foo(c);
}
それだけインクリメントれます
試しましたか?あなたが得たアウトプットは何ですか?私の32bitプラットフォームでは、4のオフセットがあります。 –
私のコンピュータでは、8バイト増分します。多分あなたのプラットフォームは64ビットではありませんか? BTWは、移植性のために '%p'を使い、ポインタを' void * 'に変換してから印刷します。 – asaelr
''ヘッダを追加し、 ''%x ''を ''%p ''に置き換えてポインタ値にキャストを追加した後、[ideoneは4の増分を示します](http://ideone.com/ 7tk1v)... –
pmg