タグ

ポインタに関するfjwr38のブックマーク (15)

  • Cのポインタで躓く人が多いが、Javaの参照で躓く人が少ない理由

    C言語の学習において、ポインタはよく躓くポイントとして知られています。「Javaにポインタはない」などと表現されることがありますが、実際にポインタは存在します。 NullPointerExceptionという例外が存在することからもこれは窺えるのですが、 C言語のポインタとはちょっと違っており、名前も「参照」と改められています。 C言語のポインタが果たす3つの役割 C言語ではポインタには3つの役割がありました。 変数や構造体を指し示すもの 配列を表現するもの 関数を指し示すもの これらが渾然一体となって、コンピュータの低レベルな「アドレス」という値になって扱われるのです。これがC言語でポインタを理解することを難しくしているのではないでしょうか。 Javaではどのように置き換えるのか? Javaではこれらの3つの機能は明確に分離されています。 まず、変数や構造体を「指し示すもの」としては「参

  • ポインタの裏話

    ポインタの裏話 岡﨑 直観 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||

  • TAILQ のソースを読んで C のポインタをマスターする。 - こせきの技術日記

    正月は TAILQ のソースを読んでいた。普段 C を読み書きしないので、とても勉強になった。ポインタの使い方がわかった(ような気持ちになれた)。 TAILQって? TAILQ は C のマクロで書かれた双方向リンクリストの実装。 連結リスト - Wikipedia BSD、OSX や glibc に含まれている。 http://freebsd.active-venture.com/FreeBSD-srctree/newsrc/sys/queue.h.html http://sourceware.org/git/?p=glibc.git;a=blob_plain;f=misc/sys/queue.h;hb=HEAD 基的な使い方は以下のページが参考になった。 Tail queue(TAILQ) C言語系/「デーモン君のソース探検」読書メモ/14, man.conf - Glamenv-S

    TAILQ のソースを読んで C のポインタをマスターする。 - こせきの技術日記
  • C言語のポインタはメモリを想像できれば理解できる | 100% Pure NEET

    最近、C言語のポインタは難しいって話をプライベートでして、そのときにした説明をまとめてみた。 コンピュータのメモリがどのようになっているか想像する これはHex Fiendというソフトを使ってあるファイルのHexダンプを見たものだけど、コンピュータのメモリも同じような構造になっているのでこれを使う。類似のソフトはHex Editorなどで検索すれば出てくるだろう。 コンピュータのメモリはこうしたずらずらと数値が記録されたマス目の連続のような構造をしている。Hex Editorなのでこれは16進数で表現されている。1バイトは16進数2桁で表現される。Hex Editorでは普通は1バイトごと、あるいは4バイトごとに区切って表示する。このエディタは一区画ごとに8桁の16進数があるので4バイトごと。 ポインタを使うのに重要なのはたぶん、こうしたメモリの内容を頭の中で思い浮かべることができることだ

  • C++ ポインタ ブートキャンプ

    Sapporo.cpp & CLR/H 合同勉強会 ( http://atnd.org/events/33614 ) で発表したスライドです。

    C++ ポインタ ブートキャンプ
  • ポインターについて理解を深めよう

    値渡しと参照渡し 関数へオブジェクトを渡す方法には、値渡しと参照渡しの2種類があります。値渡しは、オブジェクトの値が複製(コピー)され関数へ渡されます。プログラミング言語Cにおける関数呼び出しではすべて値渡しになります。なお、ポインターを渡すことでオブジェクトの参照を渡すことができるため、参照渡しとほぼ同じことが実現できます。 それぞれの渡し方による関数呼び出しの方法を説明する前に、値のコピーについて少し詳しくみてみましょう。Cにおける値渡しでは、実引数(関数呼び出しの引数)の値が仮引数(関数宣言の引数)に代入されます。 はじめに、int型のオブジェクトaとbを定義してみます。

    ポインターについて理解を深めよう
  • C++マニアック,ポインタ,pointer の使い方(クラスメンバへのポインタ)

    ポインタの使い方 ここでは C 言語と C++ 以外の言語ではあまり見かけないポインタについて解説します。 C 言語にはなく、C++ にはある、マニアックなポインタといえば、クラスメンバへのポインタです。クラスメンバへのポインタを知らない人も多いのではないでしょうか。これについては、このページの後半で解説します。前半は、通常のポインタについて解説します。 ポインタは難しいといわれることがありますが、そんなことはありません。C 言語と C++ がアセンブリ言語のように軽快であるのは、ポインタのおかげといっても良いでしょう。ここで、明快に理解してください。 ポインタは、必要なのか、使わない方がよいのか、という議論 組み込み型変数とポインタ 配列の先頭アドレスとポインタの関係 関数へのポインタ ポインタと整数の加減算(ディスプレースメント) ポインタ同士の引き算 クラスメンバへのポインタ <-

  • 世界で2番目にわかりやすいポインタの話

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

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

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

    プログラム初心者にC言語のポインタを不本意ながら教える羽目になったなら、こう教えると良いよ - 偏見プログラマの語り!
  • 何と!JavaScriptにマニュアルのメモリ管理機能を実装する·*JS MOONGIFT

    *JSはJavaScriptにC言語ライクのメモリ管理を実装するライブラリです。 JavaScriptがどうも手になじまない…そう感じているコンパイル系言語を得意とする方に試してもらいたいのが*JSです。JavaScriptにC言語に似た特性を追加するJavaScriptライブラリです。 変数の型を指定できます。異なる型にキャストしようとするとエラーになります。 データ型と演算です。 ポインタです。 関数の戻り値も指定できます。 swap関数で変数を入れ替えている例です。 mallocもあります。 *JSを使うと型の定義、構造体、ポインタ、メモリの確保と解放などおおよそスクリプト言語のJavaScriptとは思えないほどの機能が追加されます。これまでにないJavaScriptを体験したい人はぜひお試しを。 *JSはJavaScript製のソフトウェア(ソースコードは公開されていますがライセ

    fjwr38
    fjwr38 2012/05/24
    多分、C畑とかの人にjsが馴染まないのはポインタが無いとかそういうアレでは無いと思う
  • 【第16回】ミクと学ぶC言語【ポインタ1】

    【第16回】ミクと学ぶC言語【ポインタ1】 [解説・講座] C言語の初学者のための講座です。ミクと一緒に楽しく勉強しよう!講義内容:メモリの概念(アドレ...

    【第16回】ミクと学ぶC言語【ポインタ1】
  • POINTER「配列とポインタの完全制覇」「C言語 ポインタ完全制覇」

    タイトルは「C言語 ポインタ完全制覇」。 このページの書籍化とはいえ、内容の大半は書き下ろしですので、 既にWebで読んでおられる方にも決して損はさせません。 詳細はこちらへどうぞ。 「C言語 ポインタ完全制覇(第2版)」書籍情報 「C言語 ポインタ完全制覇」書籍情報(旧版) 技術評論社さんによる書籍案内はこちら。 第2版 旧版 修正履歴は、このページの末尾にあります このページについて 全くもって僭越ながら、恐れおおくも偉そうにも、 こんな文書をWWWで公開させていただくことにしました。 この文書は、もともと社内向けの教科書として作成したものです。 私は、一介の文系出身プログラマであり、 特に情報関係の教育を受けたわけでもなく、 プログラミング言語に深い造詣を持っているわけではありません。 この文書にも多くの誤りや、誤解を招く表現があるかと思います。 そのような記述を見付けられた方は、ぜ

  • Cでのポインタの読み方

    Cでのポインタの読み方 Cのポインタの読み方は、ルールを知らないと摩訶不思議です。 ルールを覚えれば、 int (*p[5])[3]; char (*(*fp)(void))(int); なんてのも解読する事ができます。 大事な前程 ポインタを読む際には、「英語で読む」必要があります。 「え~、英語~」 と思う方もいるかもしれませんが、逆に日語で読む方が大変です。 基ルール ルール 後置演算子が優先。 関数の() 配列の[] 前置はあとで。 要は、「後ろに何かあったら、後ろが優先」です。 演算子の英語での読み方 * pointer to ... () function returning ... [] array of ... Lesson 1 まず、演算子が単独で出てくる場合です。 Lesson 1-1 pointer to ... int *p; これは、まずpを見ましょう。 i

  • ポインタ虎の巻

    ポインタ虎の巻 初級篇~ポインタはなぜ難しいか? C言語を学ぶ上で、ほとんどの人が引っかかり、往々にCの勉強を放棄するきっかけとなるのがポインタである。しかし、ポインタはC言語という特定のプログラム言語だけではなく、コンピュータというものを理解する上で、必要不可欠な重要な機能である。C言語参考書では、ポインタを解説する上で「箱」のモデルを使って解説することが多いが、この虎の巻では、より突っ込んだ具体的な動作を解説することでポインタというものの質を解明して見ようと思う。参考書ではC言語の抽象レベルの上で解説がされるのが通例だが、虎の巻では単純化されたアセンブリ命令を使って具体的に解説する。 初級篇目次 変数とは何か? 疑似アセンブリの定義 文字列の処理 アドレスの取得 ポインタの型 関数呼び出しの手法 構造体とポインタ リスト構造 NEW 二進木 NEW 中級篇~ポインタの高度な技 ポイン

  • 第10回 ポインタと構造体を理解してオブジェクト指向に備える

    前回は多次元配列にポインタでアクセスする方法や,動的に確保したメモリーをポインタで多次元配列のように扱う方法を説明しました。malloc関数*1などで動的に確保したメモリー上の固まり(メモリー・ブロック)をどう扱うかは,ポインタの宣言次第であることを見ていただきました。ポインタの宣言が難しそうに見えても,実際にメモリーに値が格納されている仕組みは単純なのだと感じていただけたでしょうか。 復習を兼ねて,一つサンプル・プログラムを見てみましょう。リスト1は,2次元配列をポインタで扱うプログラムです。リスト1の(1)で, char (*p)[10]; とポインタを宣言しました。これは配列のポインタ,正確に書けば「char型の要素を10個持つ配列へのポインタ」の宣言です。(2)のfor文に登場するポインタ*(p+i)はそれぞれ,str[0],str[1],str[2]を指します。 これとよく似たポ

    第10回 ポインタと構造体を理解してオブジェクト指向に備える
  • 1