問題タブ [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.

0 投票する
5 に答える
161 参照

c - *num が 0 番目の要素の値を表示しないのはなぜですか?

このコードでは:

私の知る限りnum、最初のステートメントでnumは int へのポインターであるため、両方の printf ステートメントが最初の要素のアドレスを出力します。

しかし、numがポインタの場合、任意のアドレスも持つ必要がありますが、そのアドレスを ( でprintf("%d", &num)) 出力すると、最初の要素のアドレスが表示されます。

2 次元配列では、全体も混乱します。

このプログラムは、 のアドレスである 0 番目の要素のアドレスを出力していますnum[0][0]。しかし、なぜこれを行うのですか?それらはすべて同じアドレス (num,num[0]およびnum[0][0]) を持っているため、格納されている値を出力しないのはなぜですか?

0 投票する
2 に答える
644 参照

c++ - アドレス演算子が C++ クラスの既定のメンバーになっているのはなぜですか? それは何ですか?

C++ クラスには 5 つの既定のメンバーがあります。デフォルトのコンストラクタ、デストラクタ、コピー コンストラクタ、代入演算子、およびアドレス演算子。

  1. アドレス演算子とは何ですか? ですかclassName* operator &() {}

  2. もしそうなら、コンパイラがデフォルトでこのアドレス演算子を生成するのはなぜですか (C には既にアドレス演算子があり、この余分なオーバーヘッドなしでオブジェクトのアドレスを取得できるため)。何か特別な目的はありますか?

0 投票する
3 に答える
127 参照

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ですか?

0 投票する
4 に答える
211 参照

c - C で &&a を使えないのはなぜですか?

0 投票する
4 に答える
411 参照

c - C の swap プログラムでポインターを理解する

私は C でのポインターと参照をよりよく理解しようとしています。私のコースでは、例として次のプログラムを提供しました。

主に & 対 *(逆参照) を使用する必要性に関して、何が起こっているのかをよりよく理解するのに役立つかどうかを確認するために、以下をまとめました。基本的に、int 型へのポインターを宣言する構文 (int* a) と、アスタリスクを使用して「逆参照」する構文 (*a = *b) は、私にとって非常に混乱を招きます。これは、明確にするのに役立つと私が思った上記の別のバージョンですが、実際にはそうではありません:

要するに、私の質問は、これら 2 つのプログラムが行っていることの間に機能上の違いはありますか? 逆参照 ( ) と演算子 ( )*a = *bの使用の違いは何ですか? 」.&*a = &x

0 投票する
7 に答える
2911 参照

c - &p と p の違いは何ですか

次のような整数へのポインタがある場合:

そして、住所を印刷します

前とこれの違いは何ですか: