問題タブ [lvalue]
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 - C の左辺値クエリ
-l 値と r 値について混乱していました。コードを検討する
int x;
x=5;
と
整数×
メモリ空間は int 変数用に予約されています。次に、値 5 が割り当てられます。私の質問は
- 宣言は x が左辺値であることを意味しますか?
- x がメモリ内にアドレス 0xyyyy を持っている場合、&x はこのアドレスを参照します。このアドレス 0xyyy は左辺値、つまり &x は左辺値ですか? しかし、var のアドレスはポインタなので、l-value はポインタ変数になりますか?
c++ - 左辺値を作成することがC++で参照を返す利点の1つであるのはなぜですか?
https://cs.senecac.on.ca/~chris.szalwinski/archives/oop244.071/content/custo_p.htmlのアドレスでC++テキストを読んでいます。「参照を返す」セクションで、著者は次のように書いています。
「 関数から参照を返すことには、2つの本質的な利点があります。
効率
左辺値を作成します
「」
最初のメリット(効率)は理解できますが、2番目のメリットがなぜなのかわかりません。
著者が説明したように、私は何であるかを理解できますが、関数からの参照を返すlvalue
こととの関係が何であるかを理解していないので、それは利点になりますか?lvalue
lvalue
c++ - boost::左辺値オブジェクトとしてバインド
このようなことを行う方法はありますか (MS VS 2008)?
私は試した
しかし、うまくいきません。
c - ポインタをキャストしても左辺値は生成されません。なんで?
ここに私の最も物議を醸す答えの1つを投稿した後、私はいくつかの質問をすることを敢えてし、最終的に私の知識のいくつかのギャップを埋めます。
この種の式は、それ自体が単なる式ではなく、ポインターと左辺値であると((type_t *) x)
仮定して、有効な左辺値と見なされないのはなぜですか?x
多くの人が「標準では許可されていない」と言うことは知っていますが、論理的な観点からは合理的と思われます。規格がそれを禁止している理由は何ですか?結局のところ、任意の2つのポインターは同じサイズであり、ポインター型は、ポインター演算を実行するときに適用する必要がある適切なオフセットを示すコンパイル時の抽象化にすぎません。
c - 戻り値のアドレスを取得できないのはなぜですか?
一部のコードを 2 つのファイルに分割しましたが、以前は機能していました。あるファイルには、ポインターへのポインターである出力値パラメーターを持つ関数があります。
このパラメーターにゲッターへの呼び出しを入力し、逆参照しています。
ただし、「&」には左辺値が必要ですというエラーが表示されます。このエラーの意味は理解していますが、これはポインターであり、元の「もの」を表しているため、これを実行できると思いました。
正しいものを指しているにもかかわらず、実際のポインターのメモリ位置が変更される可能性があるという事実と関係がありますか? しかし、以前は同じファイルにあったのに、今では機能しなかったのはなぜですか?
前もって感謝します!
c++ - 動的タイプのオブジェクトとは
私が思うに、動的タイプとは、を使用して動的に割り当てられたオブジェクトを意味しますnew
。p
次の場合、オブジェクトの動的タイプまたは静的タイプを指していると言いますか?標準では、動的型が動的オブジェクトであるとは言いません。
1.3.3-左辺値式で示される左辺値が参照する最も派生したオブジェクトのタイプ(1.8)。[例:静的型が「クラスBへのポインタ」であるポインタ(8.3.1)pが、B(10節)から派生したクラスDのオブジェクトを指している場合、式*pの動的型は「D」です。 。」参照(8.3.2)も同様に扱われます。]
また、次の引用はどういう意味ですか
右辺値式の動的型は静的型です
c++ - どの言語が左辺値という用語を作り出しましたか?
Cは左辺値という用語を使用した最初のプログラミング言語でしたか、それともさらに遡りますか?「代入ステートメントの左側にあるもの」(C ++ではかなり前に意味がなくなった)の一般的な概念について話しているのではないことに注意してください。これは、ほとんどすべての命令型プログラミング言語で見つけることができます。私は特に左辺値という用語について質問しています。それはどこから来たのですか?
c - 返された構造体のメンバーを出力する
関数から返された構造体のメンバーを出力するのに問題があります。
内部のprintf
呼び出しto_hex_string_
は正しい結果を出力しますが、printf
内部の呼び出しはtest_hex
私のプログラムをクラッシュさせます。それはなぜですか?それは一生の問題ですか、それとも別の問題ですか?
printf
呼び出しをに置き換えるとputs(to_hex_string_(12345).a)
、コンパイラ エラーが発生します。
何が起きてる?
c - Cのmallocedメモリ領域のオフセットされた場所へのポインタを格納するにはどうすればよいですか?
入手したライブラリを使用して非常に単純な Hashtable を作成しようとしています。作成しようとしている行には、C-string または int がキーとして含まれています。値には 4 つの異なるタイプがあります。構造体の場合は、ポインタを割り当てられたメモリ領域に格納しようとします。ただし、私の世界では、これは非ポインター フィールドと同じロジックには従わず、次のようになります。
これがコードです
私はこれが本当に基本的なものであり、反対票がほとんど得られないことを知っていますが、答えに加えて、この * を取り除いてもポインターにならない理由を説明したいと思います。
コンパイラは次のことを許可します。
では、なぜでしょうか:
ありがとう & BR -マティ
c++ - 左辺値から右辺値への変換は行われますか?
C ++標準(4/5)単項&演算子のオペランドでは、左辺値から右辺値への変換は行われません。
例えば:
上記の場合、両方の左辺値p
はありますか?&x
または適切な例は何でしょうか?
編集:
これはどうですか?
このステートメントには変換がないことは確かですが、&operatorがこれにどのように関与するのか混乱していますか?