[memo][C言語]constの使い方

雑学

担当夫
C言語勉強メモです。
constの使い方は以下のリンクの解説が分かりやすいです。
Samurai Blog【C言語入門】constの使い方

ポインタ変数絡みのconstは要点+自分に分かりやすい言葉でメモします。
constの右に掛かるものが固定対象です。

const char *char_wrk

char*に対応するもの(=”Hello”)に固定指示を出しています。
charを指すポインタ自体は変更可能です。

const char *char_wrk = "Hello";
# char_wrk[0] = 'h';    間違い例。コンパイルエラー出ます
char* char_wrk2 = "World";
char_wrk = char_wrk2;
printf("%s\n", char_wrk);   # 「World」と表示される
実行例
$ vi const.c
--------------------------------------
#include <stdio.h>
int main(){
    const char *char_wrk = "Hello";
    char_wrk[0] = 'h';
    return 0;
}
--------------------------------------

$ gcc const.c -o const_c
const.c: In function ‘main’:
const.c:4: error: assignment of read-only location ‘*char_wrk’

$ vi const.c
--------------------------------------
#include 
int main(){
    const char *char_wrk = "Hello";
    char* char_wrk2 = "World";
    char_wrk = char_wrk2;
    printf("%s\n", char_wrk);
    return 0;
}
---------------------------------------

$ gcc const.c -o const_c
$ ./const_c
World

char* const char_wrk

このconstはchar_wrk、つまりポインタ自身を指しています。const char *char_wrkと違い、ポインタ変更不可です。char_wrkが指すchar型はconst指定ありませんが、文字リテラルで宣言した場合、文字リテラルの特徴上、char型の文字も変更不可となります。

const char* const char_wrk

記載通り、ポインタ自身も指しているchar型の値も変更不可です。

関連リンク

【まとめ】C言語