char * p =「ようこそ」と書くと。p のアドレスが表示されます。しかし、文字列のアドレスは何ですか?つまり、Welcome が格納されたアドレスは?
もう一度書くと char *s = "Welcome". p と s は同じアドレスを指しますか?
char * p =「ようこそ」と書くと。p のアドレスが表示されます。しかし、文字列のアドレスは何ですか?つまり、Welcome が格納されたアドレスは?
もう一度書くと char *s = "Welcome". p と s は同じアドレスを指しますか?
デバッガーで を調べるp
と、文字列のアドレスが表示されます。
&p
自身のアドレスですp
。
いいえ、同じアドレスを指しているp
とは限りませんが、可能性はあります。s
「ようこそ」は文字列定数であり、メモリの読み取り専用データセクションに格納されますが、この文字列リテラルを指すポインタ p がスタックに作成されます
文字列定数 "Welcome" は、多くの場合、メモリの "read-only-data" セクションに配置されます。ここに良い説明があります:文字列リテラルはどこに行くのかとデータセグメント
文字列定数「Welcome」のアドレスを見つけることができます
printf("%p",p);
もう一度書くと char *s = "Welcome". p と s は同じアドレスを指しますか?
同じ文字列定数が同じアドレスに置かれているかもしれませんし、そうでないかもしれません。