ホームページ >バックエンド開発 >C++ >C で名前を文字列として使用して変数の値にアクセスするにはどうすればよいですか?

C で名前を文字列として使用して変数の値にアクセスするにはどうすればよいですか?

DDD
DDDオリジナル
2024-10-25 01:39:301085ブラウズ

How Can You Access a Variable's Value Using its Name as a String in C  ?

C で変数名を表す文字列から変数値にアクセスする

C では、その変数を使用して動的に変数の値を取得することができます。文字列として名前を付けます。一般にリフレクションとして知られるこの手法により、柔軟なデバッグおよびイントロスペクション機能が可能になります。

これを実現するには、次の手順を利用できます。

  1. 変数の取得アドレス:

    • 「&」演算子を使用して変数のアドレスを取得します。たとえば、&counter は、カウンターが保存されているメモリの場所を返します。
  2. ポインターへのキャスト:

    • 変数をキャストします。変数の型のポインタへのアドレス。これにより、変数の値に間接的にアクセスできるようになります。例: int* counterPtr = static_cast(&counter);
  3. ポインター経由の値へのアクセス:

    • 逆参照演算子 (*) を使用して、ポインターを通じて変数の値にアクセスします。例: std::cout << *counterPtr << std::endl; counter の値を出力します。
  4. 関数ラッパー:

    • プロセスをより便利にするために、変数名を表す文字列を受け取り、変数の値を返す関数を作成できます。この関数は、上記の手順を簡素化します。

      <code class="cpp">template <typename T>
      T valueOf(const std::string& varName) {
        T* varPtr = static_cast<T*>(std::addressof(varName));
        return *varPtr;
      }</li></ul>
      </li>
      </ol>
      <p><strong>使用法:</strong></p>
      <p>valueOf 関数を使用すると、次のことができます。変数値を動的に取得:</p>
      <pre class="brush:php;toolbar:false"><code class="cpp">std::cout << valueOf<int>("counter") << std::endl;</code>

      以上がC で名前を文字列として使用して変数の値にアクセスするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。