constとポインタのポインタ
constが2つ???
#include <stdio.h>
void printStrings(const char * const *p)
{
// p[0][0] = 'c'; error: assignment of read-only location
// p[0] = p[1]; error: assignment of read-only location
printf( "p = %s\n", *p );
p++;
printf( "p = %s\n", *p );
p++;
printf( "p = %s\n", *p );
}
int main(int argc, char *argv[])
{
const char str1[] = "a";
const char str2[] = "bc";
const char str3[] = "def";
const char *pStrArray[] = { str1, str2, str3 };
printStrings( pStrArray );
return 0;
}
実行結果
p = a
p = bc
p = def
今日は、constが2つだよ。
これは、str1の最初の文字を書き換えるコードだけど、
p[0][0] = 'c';
1つ目の const char * でエラーになるよ。
これは、pStrArray[0]の値(アドレス)を、
p[0] = p[1];
pStrArray[1]の値(アドレス)で書き換えるコードだけど、
2つ目の const * でエラーになるよ。
書き換えてはいけない変数や配列も、
こうやってCコンパイラさんに監視して貰えば、
後々のメンテナンスもきっと楽になるからちゃんと理解してね!
Leave a Comment