このエントリーをはてなブックマークに追加


char[]とchar*の違い

charの配列(char[])とcharのポインタ(char*)の違いをCサンプルコードを交えて説明します。


スポンサーリンク

関連記事

char[]とchar*でCサンプルコードを作成してみる

以下にchar[]とchar*でCサンプルコードを作って実行してみます。
サンプルコードは指定した配列部分の文字を変更するだけのものです。

char[]のサンプルコード

filechar1.c (改行コードLF)

#include <stdio.h>

int main(void)
{
    char s[] = "hello world";

    s[0] = 'H';
    printf("%s\n", s);

    return 0;
}

以下、コンパイルして実行した時の出力です。

$ gcc char1.c -o char1
$ ./char1 
Hello world

char*のサンプルコード

filechar2.c (改行コードLF)

#include <stdio.h>

int main(void)
{
    char *s = "hello world";

    s[0] = 'H';
    printf("%s\n", s);

    return 0;
}

以下、コンパイルして実行した時の出力です。

$ gcc char2.c -o char2
$ ./char2 
Segmentation fault

まとめ

char*で文字列を指定して、配列操作で値を入れ替えようとすると Segmentation fault が表示され終了してしまいます。
これは、char*で文字列を指定すると変更不可の文字列として宣言されるためです。
したがって、変更する場合はchar[]として宣言する必要があります。

以上、char[]とchar*の違いについての記述でした。


スポンサーリンク

添付ファイル: filechar2.c 142件 [詳細] filechar1.c 140件 [詳細]

トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2015-03-20 (金) 21:01:00 (1308d)