[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型の値も変更不可です。