値へのポインターを 1 行で作成したいと考えています。これと同じ機能が欲しい:
int i = MY_VALUE
int * j = &i;
ただし、これを 1 行で実行したいので、2 つの変数を使用したくありません。私はこれを行うことができることを知っています:
int * i = new int (MY_VALUE);
しかし、動的メモリは使いたくありません。静的メモリを使用したい。
1行で、1つの変数を使用して静的に値へのポインターを割り当てる方法はありますか?
値へのポインターを 1 行で作成したいと考えています。これと同じ機能が欲しい:
int i = MY_VALUE
int * j = &i;
ただし、これを 1 行で実行したいので、2 つの変数を使用したくありません。私はこれを行うことができることを知っています:
int * i = new int (MY_VALUE);
しかし、動的メモリは使いたくありません。静的メモリを使用したい。
1行で、1つの変数を使用して静的に値へのポインターを割り当てる方法はありますか?
あなたがしなければならない場合...
int i = 5, *p = &i;
いいえ、値へのポインターを持つことはできません。変数へのポインターまたはオブジェクト (左辺値) へのポインターのみを持つことができます。
詳しく説明すると、C の観点から、演算子C11
の使用法について§6.5.3.2 の章を引用します。&
単項演算子のオペランドは
&
、関数指定子、 単項演算子[]
または単項演算子の結果、または*
ビットフィールドではなくレジスタ記憶クラス指定子で宣言されていないオブジェクトを指定する左辺値のいずれかでなければなりません。
だから、何かの線に沿って
int * p = &10;
純粋に無効です。