これから、文字列とポインタの類似点や相違点についてご紹介しよう。
配列による文字列とポインタによる文字列
今回は、「配列による文字列とポインタによる文字列を表示するプログラム」を例にして説明しよう。
なお、本プログラムは、Windows 11 Home(23H2)上で、 Visual Studio Code(1.90.0)を使用して作成し、gcc (Ubuntu 9.4.0-1ubuntu1~20.04.2) 9.4.0でコンパイルしている。
//配列による文字列とポインタによる文字列を表示するプログラム
#include <stdio.h>
int main(void)
{
char str[] = "XYZ";
char *ptr = "789";
printf("str = \"%s\"\n",str);
printf("ptr = \"%s\"\n",ptr);
return 0;
}
実行結果
str = "XYZ"
ptr = "789"
配列による文字列str
strはchar[4]型の配列である。
文字列内の各文字のアクセスは、添字演算子[ ]を使って行う。
ポインタによる文字列ptr
ptrは、char *型のポインタである。
ポインタによる文字列は、
char *p = “String”;
のように宣言・初期化する。
→ポインタpと文字列”String”の両方が記憶域を占有する。
ポインタptrは、文字列の先頭文字を指すポインタなので、ポインタと配列の表記上の可換性により、ポインタptrは配列のように振る舞う。
(参考) 新・明解C言語 入門編 第2版 柴田 望洋 (著)SBクリエイティブ
コメント