問題タブ [address-operator]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c - *num が 0 番目の要素の値を表示しないのはなぜですか?
このコードでは:
私の知る限りnum
、最初のステートメントでnum
は int へのポインターであるため、両方の printf ステートメントが最初の要素のアドレスを出力します。
しかし、num
がポインタの場合、任意のアドレスも持つ必要がありますが、そのアドレスを ( でprintf("%d", &num)
) 出力すると、最初の要素のアドレスが表示されます。
2 次元配列では、全体も混乱します。
このプログラムは、 のアドレスである 0 番目の要素のアドレスを出力していますnum[0][0]
。しかし、なぜこれを行うのですか?それらはすべて同じアドレス (num,num[0]
およびnum[0][0]
) を持っているため、格納されている値を出力しないのはなぜですか?
c++ - アドレス演算子が C++ クラスの既定のメンバーになっているのはなぜですか? それは何ですか?
C++ クラスには 5 つの既定のメンバーがあります。デフォルトのコンストラクタ、デストラクタ、コピー コンストラクタ、代入演算子、およびアドレス演算子。
アドレス演算子とは何ですか? ですか
className* operator &() {}
?もしそうなら、コンパイラがデフォルトでこのアドレス演算子を生成するのはなぜですか (C には既にアドレス演算子があり、この余分なオーバーヘッドなしでオブジェクトのアドレスを取得できるため)。何か特別な目的はありますか?
c++ - C ++でポインターがこのように動作するのはなぜですか
コンテストの質問紙でこのプログラムを見つけました。
出力は2 5
5 行目を and に変更するint *ptr=(int*)(&a);
とprintf("%d %d ",*(a + 1), *(ptr));
出力は次のようになります2 1
最初のケースでptr
は の最後のアドレスを取得array+1
し、2 番目のケースptr
では配列の同じアドレス ( のアドレスa
) を取得しました。
ptr
私の疑問は、 a がインクリメントされて割り当てられたときと、インクリメントせずにa
割り当てられたときに、この割り当てが異なる種類の動作を示すのはなぜptr
ですか?
c - C の swap プログラムでポインターを理解する
私は C でのポインターと参照をよりよく理解しようとしています。私のコースでは、例として次のプログラムを提供しました。
主に & 対 *(逆参照) を使用する必要性に関して、何が起こっているのかをよりよく理解するのに役立つかどうかを確認するために、以下をまとめました。基本的に、int 型へのポインターを宣言する構文 (int* a) と、アスタリスクを使用して「逆参照」する構文 (*a = *b) は、私にとって非常に混乱を招きます。これは、明確にするのに役立つと私が思った上記の別のバージョンですが、実際にはそうではありません:
要するに、私の質問は、これら 2 つのプログラムが行っていることの間に機能上の違いはありますか? 逆参照 ( ) と演算子 ( )*a = *b
の使用の違いは何ですか? 」.&
*a = &x
c - &p と p の違いは何ですか
次のような整数へのポインタがある場合:
そして、住所を印刷します
前とこれの違いは何ですか: