多くの例では、int x = 0; int *ptr; ptr = &x
の場合、ptrはxのアドレス情報を保存しています。私はちょっと混乱しています。なぜなら、次のコードが同じように動作するのではないかというと、私はptr
を印刷するとき、それは示していますC++ポインタの文字配列の割り当て
アプリ
なく、P [0]のアドレス。
#include <iostream>
#define show(a) std::cout<<a<<std::endl;
#define Syswait std::system("pause");
int main() {
char p[] = "app";
char *ptr;
ptr = &p[0];
show(ptr);
Syswait;
}
誰でも説明できますか?ありがとう。
ptrは最初のアドレス(開始アドレス)を格納します。ptr =&x ..its実際にゼロの最初のアドレスを保存します –
マクロは悪です。使用しないでください。例として、 'show(a&b)'を実行するとどうなりますか? – o11c
[cout <<とchar \ *引数の重複したものは、ポインタ値ではなく文字列を出力します](https://stackoverflow.com/questions/17813423/cout-with-char-argument-prints-string-not-pointer-value ) –