トリプルポインタを用いて配列の要素を表示しようとしたのですが、segmentation fault: 11
が出てしまいました。
以下が書いたコードとなります。
c
1#include <stdio.h> 2 3void main() 4{ 5 char array[3] = {'a', 'b', 'c'}; 6 char *ary_ptr; 7 char **ary_dptr; 8 char ***ary_tptr; 9 10 ary_ptr = array; 11 ary_dptr = &ary_ptr; 12 ary_tptr = &ary_dptr; 13 14 printf("**ary_dtpr %c\n", **ary_dptr); //表示結果: **ary_dtpr a 15 printf("*(*ary_dtpr + 1) %c\n", *(*ary_dptr + 1)); //表示結果: *(*ary_dtpr + 1) b 16 17 printf("***ary_tptr %c\n", ***ary_tptr); //***ary_tptr a 18 printf("**(*ary_tptr + 1) %c\n", **(*ary_tptr + 1)); //segmentation fault部分 19}
18行目のprintf("**(*ary_tptr...+ 1));
の部分で,**(*ary_tptr + 1) b
という結果を期待していましたが、いわゆるセグフォが起きてしまいました。ポインタの知識が浅く原因がわかりません。
なぜ要素を表示できないのでしょうか。ご教示お願いします。
######追記
現在C言語を入門書で勉強中で、データ型、演算子、関数、define、配列、ポインタまで学びました。環境はmac OS Catalina、エディタがVSCodeです。
回答2件
あなたの回答
tips
プレビュー