C でポインターを使用する方法を段階的に説明します
#C# はポインターがカプセル化されたインタープリター言語であるため、ユーザーはポインターオブジェクトのを直接呼び出すことはできません。ただし、C# を使用して C/C DLL を呼び出す場合、関数のパラメーターまたは戻り値がポインターであることがよくあります。この場合、ポインタを操作する必要があります。
C# でポインターを使用するには、まず次の質問に答える必要があります:
1. C
#C# によって提供されるポインターの種類ポインターは、ポインターまたはハンドルを表すために使用されるプラットフォーム固有の型である IntPtr または UIntPtr です。したがって、IntPtr はポインターまたはハンドルを表すために使用でき、プラットフォーム固有の型です。
1.1 IntPtr はどこで使用されますか?
(1) C# が WIN32 API を呼び出すとき
(2) C# が C/C で書かれた DLL を呼び出すとき(実際には1と同じですが、他の人たちと協力して開発する場合によく使います)
1.2 IntPtrの使い方
たとえば、次のように定義された関数プロトタイプがあります:
DllDemoAPI DLLGen* DLLGen_Create(HWND hWnd);
C# で引用するときは、次のように記述する必要があります:
[DllImport("DLLGen.dll", EntryPoint = "DLLGen_Create", CallingConvention = CallingConvention.Cdecl)] public extern static IntPtr DLLGen_Create(IntPtr hWnd);
これには、C# の型と C の型の間の対応関係が含まれます。
(1) void * は直接 IntPtr に変換できます。
(2) char * は、C# の文字列型に対応します。
2. マネージドとアンマネージドの違いは何ですか
C# のメモリ割り当てスペースの自動割り当ておよびリサイクル メカニズムは、マネージド メモリを使用して実装されます。マネージド メモリ メモリは、プログラムがポインタ メモリを割り当て、ポインタへの参照数をカウントすることによってポインタを解放する必要があるかどうかを判断する役割を果たします。
アンマネージとは、ポインタ メモリをアンマネージ メモリ領域に割り当てることを指します。ここで割り当てられたポインタは、自身でメモリを割り当て、メモリをリサイクルする必要があります。
3. C/C でのポインターの使用方法
C# では、安全でないステートメントを使用してポインターを操作できます。たとえば、
unsafe { int *ptr = new int[100]; for (int i = 0; i < 100; i++) { *(ptr+i) = i; } delete[] ptr; }
unsafe モジュールでは、ポインタを c/c 方法で使用できます。
注: 安全でないモジュールを使用する場合は、C# プロジェクトのプロパティで [安全でないモジュールの使用を許可する] オプションをオンにします。
読んでくれた皆さん、ありがとうございます。たくさんの利益が得られることを願っています。
この記事は以下から転載しています: https://blog.csdn.net/menjiawan/article/details/48677455
推奨チュートリアル: 「C 言語」
以上がC# でポインターを使用する方法を段階的に説明します。の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。