タグ

Programmingとpointerに関するItisangoのブックマーク (7)

  • fixed ステートメント - 移動可能変数を固定する - C# reference

    fixed ステートメントを使うと、ガベージ コレクターによる移動可能変数の再配置を防ぎ、その変数へのポインターを宣言することができます。 固定 (またはピン留め) された変数のアドレスは、そのステートメントの実行中に変わりません。 宣言されたポインターは、対応する fixed ステートメント内でのみ使用できます。 宣言されたポインターは読み取り専用であり、変更できません。 unsafe { byte[] bytes = [1, 2, 3]; fixed (byte* pointerToFirst = bytes) { Console.WriteLine($"The address of the first array element: {(long)pointerToFirst:X}."); Console.WriteLine($"The value of the first array

  • string型とsbyte*型の変換 - OKWAVE

    C++」というのは「C++/CLI」のことですか? 処理系がVC 2005以降だと仮定して話を進めます。 例えば下記のようなC++/CLIの参照クラスを含むクラス ライブラリ プロジェクト「CppCliString」があったとして、 // CppCliString.h #pragma once #include <cstdio> #include <locale.h> #include <vcclr.h> // http://support.microsoft.com/kb/311259/ja using namespace System; using namespace System::Runtime::InteropServices; namespace CppCliString { public ref class Class1 { public: static void SetL

    string型とsbyte*型の変換 - OKWAVE
    Itisango
    Itisango 2020/10/26
    IntPtr ptr = Marshal.StringToHGlobalAnsi(strText); CppCliString.Class1.PutsA((sbyte*)ptr); // unsafe #dotNet
  • アンセーフ コード、データへのポインター、および関数ポインター - C# reference

    ポインター関連の演算子について詳しくは、「ポインターに関連する演算子」をご覧ください。 どのポインター型も、暗黙的に void* 型に変換できます。 どのポインター型にも、値 null を割り当てることができます。 どのポインター型も、キャスト式を使用して、他のポインター型に明示的に変換できます。 また、任意の整数型をポインター型に、または任意のポインター型を整数型に変換することもできます。 これらの変換には、明示的なキャストが必要です。 次の例では、int* を byte* に変換しています。 ポインターは、変数の最下位バイト アドレスを指すことに注意してください。 int のサイズ (4 バイト) まで結果を連続してインクリメントする場合、変数の残りのバイトを表示することができます。 int number = 1024; unsafe { // Convert to byte: byt

    Itisango
    Itisango 2020/10/21
    "To maintain type safety and security, C# does not support pointer arithmetic, by default. However, by using the unsafe keyword, you can define an unsafe context in which pointers can be used. For more information about pointers, see Pointer types." #dotNet
  • ptrdiff_t - cppreference.com

    [編集] ノート ptrdiff_t は、負の値を取り得る場合に、ポインタ算術や配列のインデックスのために使用されます。 int などの他の型を使用するプログラムは、例えば64ビットのシステムにおいて、インデックスが INT_MAX を超えるとき、または32ビットの剰余算術をあてにしている場合、失敗するかもしれません。 同じ配列の要素を指すポインタ (配列の最後の要素の次を指すポインタも含む) だけがお互いに減算することができます。 2つのポインタの差を ptrdiff_t で表せないかもしれないくらい配列が大きい (要素が PTRDIFF_MAX 個より多いけれどもサイズが SIZE_MAX バイトより小さい) 場合、そのような2つのポインタの減算の結果は未定義です。 PTRDIFF_MAX より短い文字配列に対して、 ptrdiff_t は size_t の符号付き版としての役割を持ち

    Itisango
    Itisango 2020/04/01
    typeof (pointer_a - pointer_b) == ptrdiff_t #C
  • 世界で2番目にわかりやすいポインタの話

    これ以上に解りやすく説明できるという人は、@super_rti までURLを教えて下さい。世界一わかりやすいの看板を差し上げます。

    世界で2番目にわかりやすいポインタの話
  • プログラム初心者にC言語のポインタを不本意ながら教える羽目になったなら、こう教えると良いよ - 偏見プログラマの語り!

    僕がプログラミングに触れた当時は、プログラミングといえば「まず C 言語」でした。それから 10 年以上が経ちました。学校の授業や企業の研修では未だに C 言語を教えているところがあるようです。関数型プログラミング言語という波が来ている 2012 年にもなって未だに C 言語をやっているというのはまるで進歩が無く残念な気もしますが、比較的多くのプログラマに浸透している共通言語を最初に教えるというのは、一方では喜ばしい事だと解釈する事もできるのかもしれません*1。まぁとにかく、意にせよ不意にせよ現場で プログラム初心者に C 言語を教える羽目になった 人がたくさんいて、プログラム初心者なのに C 言語を学ばざるを得なくなった 若者がたくさんいるということです。 C 言語を教えるときに避けて通れないのがポインタで、プログラム初心者が C 言語を学ぶときにやたらとつまずく人が多いのがポインタ

    プログラム初心者にC言語のポインタを不本意ながら教える羽目になったなら、こう教えると良いよ - 偏見プログラマの語り!
  • ポインタの裏話

    ポインタの裏話 岡﨑 直観 okazaki at ecei.tohoku.ac.jp http://www.chokkan.org/ @chokkanorg ポインタの裏話 プログラミング演習A 1 このような説明を 覚えていますか? 知らなくても全く問題ありません ポインタの裏話 プログラミング演習A 2 int x = 0; &xは変数xの「アドレス」 「番地」「住所」を返す 変数x 0 &x メモリ空間, 記憶空間 変数xのアド レス(住所) ポインタの裏話 プログラミング演習A 3 ____ / \ 何言ってたんだこいつ? / ⌒ ⌒\ 番地 アドレス ぬるぽ / (●) (●) \ \ / | 、“ ゙)(__人__)" ) __________ \ 。` ⌒゚:j´ ,/ j゙~~| | | | __/ \ |__| | | | || / , \n||

  • 1