タグ

pointerに関するYudoufuのブックマーク (6)

  • Swift から Objective-C の構造体のメンバにアクセスする方法

    Swift から Objective-C の構造体のメンバにアクセスする方法は、どうすれば良いでしょうか? 【Objective-C】 struct test { char *test_name; }; extern int getifaddrs(struct test **); 【Swift】 var work : UnsafeMutablePointer<test>; var ret:int_fast32_t = 0 ret=getifaddrs(&work) ここで、work の中の test_name メンバにアクセスしたいのですが出てきませんでした。 work.

    Swift から Objective-C の構造体のメンバにアクセスする方法
    Yudoufu
    Yudoufu 2016/01/08
    withUnsafeMutablePointer とかを使う方法なども
  • Go のスライスの内部実装 - Block Rockin’ Codes

    History 14/05/09: Merge2 を修正しました。http://twitter.com/jbking/status/464659353945911297 Intro Go のスライスは、いわゆる LL 系の言語が持つ可変長配列の実装と似ています。 よって LL のような手軽な扱いをすることもできますが、その内部実装を知ることでより効率の良いメモリハンドリングができ、パフォーマンスを改善や、メモリーリークの防止などに繋がる可能性があります。 この辺は SWrap というライブラリを作りながら勉強したので、今回は、この Go のスライスの内部実装を解説します。 Go の配列 スライスを知るためには、まず配列について知っておく必要があります。 Go の配列は固定長のため、以下のように長さを指定して宣言します。 var arr [4]int func main() { arr =

  • Go のスライスでハマッたところ - Block Rockin’ Codes

    intro 先日 GoのSliceもヤバイ - Qiita こんな記事をみて、別の挙動だけどスライスの内部を理解しきれていなかった頃のことを思い出した。 結構前に謎に思っていた挙動についての話。 以前この挙動を解説しようと思って、前提として書いたスライスの内部構造の記事が、 Go のスライスの内部実装 だったのですが、そっちを書き終わって満足してしまい、題を忘れていました。 この挙動は、先のブログで説明した内容がわかっていないと、なかなか理解できないかも。わかってしまえば簡単ですが。 やりたいのは、関数側でスライスを操作したときの呼び出し側での結果。 順を追ってみてみます。 配列を関数内で変更する 関数は値渡しで、配列はそれ自体が値なので、まるっとコピーされます。 以下の例は、戻り値で返さないと、呼出側は変化しません。 package main import ( "log" ) func

  • C言語 に慣れた人が書く C++ のソース - Natural Software

    C++ のソースを見てると。この人普段 C言語がメインだな?と思うソースにお目にかかることが多い。 その人の傾向も並べてみる。 アスタリスクとかアンパサンドの位置が変数寄り C 言語がメインの人はポインタとか参照をこう書く char &r; char *p = &r; C++ の人はこう書く char& r; char* p = &r; 全体的に const がない 引数の型につける方の const がない 当然 const メンバ関数などない 定数は #defione 3文字が好き 変数は3文字。元が4文字でも3文字の変数 tmp とか cnt とか 変数を関数の先頭で宣言する 使うところで宣言しない。 void main() { int i; string str1, str2; for ( i = 0; i < 10; ++i ) { ごにょごにょ } ごにょごにょ str1 = "

    C言語 に慣れた人が書く C++ のソース - Natural Software
  • C/C++のポインタと参照、右寄せか左寄せか - minus9d's diary

    CやC++でポインタ変数を宣言するとき、次の2通りの書き方はどちらもコンパイルが通る。 int *p1; // 右寄せ int* p2; // 左寄せ 自分は右寄せで書くことが多い。理由は特にない。最初にCを勉強するときに使った教科書が右寄せのスタイルをとっていたから、というだけである。 しかし最近他の人のコードで右寄せのものを目にする機会が何度か立て続けにあった。はたしてどちらが多数派なのか、簡単に調べてみることにした。 まずは手持ちのをチェック。同じでもページによって両方のスタイルを使っているものもある。なので以下の調査には漏れがあることをご容赦願いたい。 Bjarne Stroustrup 「C++の設計と進化」 C++開発者のBjarne Stroustrupは左寄せ。p271から引用。 void* operator new(size_t, void* p) { return

    C/C++のポインタと参照、右寄せか左寄せか - minus9d's diary
  • ポインタ宣言の*記号、左寄せ派? 右寄せ派?

    C/C++でポインタ変数を宣言するときの*記号をint* a;のように左寄せで書くか、int *a;のように右寄せで書くか。 右寄せで書く場合、「Cでは宣言と使用の文法を一致させる」という規則から考えれば素直に解釈できるという話。

    ポインタ宣言の*記号、左寄せ派? 右寄せ派?
  • 1