C言語 文字列をポインタで処理






スポンサードリンク

文字列を扱う注意点は、文字列の終了を知らせる【 "\0" 】が必ず入る点に注意しなくては行けません。まずは簡単な産婦るを見て頂いて、前回勉強しましたポインタの加減算と同じ方法で処理する方法を見てみたいと思います。

【 int 】(整数)型と【 char 】(文字列)型変数のメモリ確保容量と配列の違いを見てみる
※【 int 】型は4バイト使い、【 char 】型は1バイト使います。
※2、【 char 】型の場合は文字終端マーク"\0"が必ず代入されます
下記は文字列と整数型変数宣言とメモリアドレス領域を表して見たものです。
例:【 char a[2]="AB"; 】
例:【 int b[2]={10,20,30}; 】
とそれぞれした場合
メモリ領域 アドレス0 アドレス1 アドレス2
char a[2]の場合 A
a[0]
B
a[1]
\0
a[2]
メモリ領域 アドレス0 アドレス4 アドレス8
int b[2]の場合 10
b[0]
20
b[1]
30
b[2]
※メモリ確保領域に付きましては、まだ詳しく覚える必要はないと思いますが、確認の為表にての確認をさせていただきました。

文字配列をポインタで出力サンプル。
配列とポインタの関係を簡単にまとめてみました。
※一番最初の【 chp=ch; 】ポインタにchのアドレスを代入しているのですが、通常は【 chp=&cd[0] 】とするのですが、配列の先頭アドレスをポインタに代入する場合のみ、【 chp=ch; 】と【 & 】を省略する事ができます。
※【 chp=&ch; 】とするとコンパイルエラーになります。

#include <stdio.h>
int main(void)
{
   char ch[5]="ABC";
   char *chp;

   chp=ch;

   printf("%s\n",ch);
   printf("%s\n",chp);

   chp=&ch[1];
   printf("%c\n",ch[1]);
   printf("%c\n",*chp);

   chp=&ch[2];
   printf("%c\n",ch[2]);
   printf("%c\n",*chp);

return 0;
}


解説
文字列変数宣言【 char 】を使用した場合、ポインタ宣言も【 char 】(例:char *chp;)とします。
配列【 ch[5] 】を用意し、それぞれABCを初期値に設定。
※特に【 ch[4] 】としてもOKです。文字列の場合終端マークに0が入るので、余分に配列を用意しております。
上記サンプルにも書きましたが、配列の先頭アドレスをポインタに代入する場合【 & 】と要素を付加しなくていいとの事です。

それぞれ配列要素にてポインタを更新し、それぞれの文字が同じ物が正しく出力されているかを見ております。
char型ポインタを利用した処理
上記の出力結果


ポインタを更新せずに、加算して文字配列の要素をそれぞれ出力するサンプルです。

#include <stdio.h>
int main(void)
{
   char ch[5]="ABC";
   char *chp;

   chp=ch;

   printf("配列の先頭アドレス  %c\n",*chp);

   printf("次の要素をアドレス  %c\n",*(chp+1));

   printf("その次の要素アドレス %c\n",*(chp+2));

return 0;
}

解説
ポインタを加算することにより、先頭アドレス以降に代入されている文字がそれぞれ出力されます。
ポインタ【 chp 】に配列【ch[0]】の先頭アドレスが代入されているので、ポインタ+1で配列要素【 a[1] 】が出力され、
+2にすると配列要素【 a[3] 】が出力されます。
但し、先のサンプルのようにポインタを更新の上出力しているわけではありませんので、ポインタに代入されているのは先頭アドレスのままです。
ポインタを加算する場合は【 *(ポインタ名+1) 】としないといけません。【 putchar 】を用いてポインタを加算の上出力する場合でも同様です。例【 putchar(*(chp+1)); 】等とします。
charポインタ処理説明

上記の出力結果です。


以上で簡単ですが文字列をポインタで処理の説明です。

あかかげまるのC言語入門はこちら!!

スポンサードリンク

パソコン勉強部屋 | パソコン勉強部屋2 | ADSL勉強部屋 | メール勉強部屋 | LAN勉強部屋 | ホームページ勉強部屋 | 自宅サーバー勉強部屋 | お役立ちソフトの部屋 | C言語勉強 | 無料ゲーム | 無料セキュリティー | Linuxのコーナー | あかかげまる | オンライン通販 | ショップブランドパソコン | DVDとCD編集ツール

 Subscribe in a reader


ページトップへ