私は Java のバックグラウンドを持っていますが、次のようなことに遭遇しました。
SDL_Surface *dot = NULL;
オブジェクトの前にアスタリスクを付けるのはなぜですか?
これができない理由:
SDL_Surface dot = NULL;
2つの違いは何ですか?
私はそれがポインターであることを知っていますが、正確にはどうなりますか?
私は Java のバックグラウンドを持っていますが、次のようなことに遭遇しました。
SDL_Surface *dot = NULL;
オブジェクトの前にアスタリスクを付けるのはなぜですか?
これができない理由:
SDL_Surface dot = NULL;
2つの違いは何ですか?
私はそれがポインターであることを知っていますが、正確にはどうなりますか?
オブジェクトの前にアスタリスクを付けるのはなぜですか?
型の一部としてアスタリスクを使用して*
、ポインターを宣言します。これがないと、コンパイラはそれがポインターであることを認識せず、通常のオブジェクトとして解釈するだけです。
int x; // an integer
int *x; // a pointer to an integer
Java にはありますnull
がNULL
、C++ では に展開されるプリプロセッサ マクロです0
。ポインターが0
それに設定されている場合、通常、値で初期化されていないことを意味します。
int *x = NULL; // same as int *x = 0
2つの違いは何ですか?
これはその質問に答えると思います。
基本的に、ポインターはアドレスへの参照です。次のようなものがある場合:
int temp = 1;
int *p; // or int* p or int * p
p = &temp;
temp の値を p に割り当てていませんが、スタック内のアドレスを参照しています。違いは明らかです。量ではなく、場所です。
逆に、これを行うことができます:
int temp2 = 0;
temp2 = *p; //temp2 is now 1
このトピックの詳細については、このを参照してください。