タグ

関連タグで絞り込む (1)

タグの絞り込みを解除

pointerに関するblueleのブックマーク (5)

  • 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

  • http://chaichan.lolipop.jp/src/c.htm

  • ポインタ

    せりか式 - C 言語チュートリアル - ポインタ いつもと違って,今回はポインタの基礎を少々 目次 ポインタとは 基 種類 普通のポインタ 関数ポインタ NULLポインタ void型のポインタ 使い方 ポインタ演算 応用 配列 関数ポインタ 引数とする例 返値となる例 ファイルからの読み込み 多次元配列の動的生成 ポインタとは メモリをいじり回すための手段です. 単なる変数は,変数が指している番地の値しか利用できませんが,ポインタ変数を利用することで,ポインタ変数が指している番地の値が指している番地の値を利用することができます. 少々ややこしいですが,1つ先まで利用できるようになるわけです. 右図の例の場合,変数iを利用するとiの値しか使うことができませんが,ポインタ変数pに変数iの番地を入れておくことで,間接的に変数iもいじることができるのです. 結局ややこしくなった上に,iしか使え

  • 【C/C++】 2次元配列の引数渡し - 日々此精進

    今日、ふと悩んだ2次元配列を関数引数で渡す方法。 やりたいのはつまり... static void sub_func( ☆ ) { /* ここで2次元配列A[5][3]の各要素をA[x][y]のように読み書きする */ } void func( void ) { int A[5][3]; sub_func( A ); } という事。 問題となるのは「☆」の部分をどのようにすれば良いのか? いくつか方法を思いつきますね。 1. static void sub_func( int* a ) これはあくまで2次元配列の先頭アドレスをポインタ変数として受け取る形。この形式で渡すと2次元配列を格納したメモリにアクセスする事はできるけど、2次元配列である情報が渡らない。つまりA[x][y]のような形式でアクセスできない。 よく見かけるコートは、この方法でアドレスを渡して、その後中の要素番号を計算しつつ

    【C/C++】 2次元配列の引数渡し - 日々此精進
  • C/C++でポインタによる多次元配列を連続したメモリ領域に作成する

    下記のようにC/C++の配列で多次元配列を作れば連続したメモリ領域となるが、動的に大きさを変えられないし、関数に渡したりするのも大変だ。 int a[N][M]; 一方、ポインタを使った下記の方法だと確保したメモリ領域が不連続となる。 int **a = new int*[N]; for (int i = 0; i < N; i++) a[i] = new int[M]; 動的にメモリ確保して連続したメモリ領域にしたい場合、以下のようにすれば良い。 int **a = new int*[N]; a[0] = new int[N * M]; for (int i = 1; i < N; i++) a[i] = a[0] + i * M; ここで、a[i][j] と (*a)[i*M+j] は同じ値を示す。 二次元配列、三次元配列を扱った実際のコード(C/C++)を最後に載せておく。 Cバージ

  • 1