I ♥ WordPress

[時間割:C言語]『はじめてのC言語完全入門』その14
2009/01/10 03:37 posted by kunkichi

金曜日は「C言語」。文字列とポインタです。難しそーだなー。

はじめてのC言語 完全入門 (標準プログラマーズライブラリ)
塚越 一雄
技術評論社
売り上げランキング: 420963


  • 文字へのポインタ宣言。char *p;
  • ただしこの時文字列のためのメモリ確保は行われていないため、以下の方法でメモリを確保する。
    • 動的メモリの確保。これは後日。
    • 配列を確保して先頭アドレスをポインタに代入。char *p;
      char str[]= "Hello, World";
      p = str;
      これでpが文字列を表す変数として使えるので、printfで出力してみる。printf("%s¥n",p);結果:Hello,Worldさらにポインタをインクリメントして、文字列の操作もできる。p++;
      printf("%s¥n",p);
      結果:ello,World
    • 文字列リテラルchar *p = "Hello, World";シンプルでわかりやすい。ただし、確保した文字列の変更はできない。printf("%s\n",p);
      *p = 'h';
      printf("%s\n",p);
      結果:Hello,World
      Bus error
      逆に、配列を確保してポインタに代入した場合は変更できる。char *p;
      char s[] = "Hello,World";
      p = s;
       
      printf("%s\n",p);
      *p = 'h';
      *(p+6) = 'w';
      printf("%s\n",p);
      return 0;
      結果:Hello,World
      hello,world

うーん、なんかピンとこないなー。配列、ポインタ、文字列とややこしいのがミックスした感じですっきりしない。
もう一度、前のところ見直してみようかな。

ちょっと短いけど今日はここまで。

コメント&トラックバック

トラックバックURL





このページの先頭へ