Shammer's Philosophy

My private adversaria

warning: incompatible integer to pointer conversion assigning to 'char *' from 'int' [-Wint-conversion]

文字列 printf で Segmentation fault 実験 - Shammerismのテストで、

warning: incompatible integer to pointer conversion assigning to 'char *' from 'int' [-Wint-conversion]

という Warning が出ていたが、この意味がわかった。
これは、

  • 変数は char のポインタとして宣言されている
  • 代入されようとしているのは char 型である

ため、int 型の領域に char を入れようとしている、という感じの警告。char 型で宣言したつもりだったが・・・こう書くのが正解だったようだ。

#include <stdio.h>

int main(int argc, char *args[]){
    char *x[256];
    *x[0] = 'a';
    *x[1] = 'b';
    *x[2] = 'c';
    printf("%s\n", *x);
    return 0;
}

そして、これを実行すると・・・

$ gcc segfault.c 
$ ./a.out
Segmentation fault: 11
$

改めて原因を探りますか。