回答編集履歴

1

追記

2019/10/10 02:09

投稿

kazuma-s
kazuma-s

スコア8224

test CHANGED
@@ -23,3 +23,47 @@
23
23
  return strcmp(*(const char (*)[3])a, *(const char (*)[3])b);
24
24
 
25
25
  に変えてみてください。
26
+
27
+
28
+
29
+ **追記**
30
+
31
+ ベストアンサーになったということは、この回答を見たんですよね。
32
+
33
+
34
+
35
+ 「そのサイトはどこですか?」という質問になぜ答えてくれないのでしょうか?
36
+
37
+ どこのサイトであろうと、
38
+
39
+ return strcmp(*(const char)a,*(const char )b);
40
+
41
+ と書いているはずがないのです。
42
+
43
+ a の型を const char にキャストしたら、それはポインタではないので、
44
+
45
+ *演算子を使うとエラーになるからです。
46
+
47
+
48
+
49
+ 次に、tatsu99 さんの回答の方がベストアンサーだと思います。
50
+
51
+
52
+
53
+ return strcmp(*(const char (*)[3])a, *(const char (*)[3])b);
54
+
55
+ も間違いではないのですが、これは、
56
+
57
+ a の型が const void * なのを
58
+
59
+ (const char (*)[3])a の型が const char (*)[3] となるように変換しています。
60
+
61
+ これはポインタですから、*演算子により、
62
+
63
+ *(const char (*)[3])a の型が、const char [3] になります。
64
+
65
+ これは配列なので、配列の先頭要素へのポインタである const char * に
66
+
67
+ 暗黙の変換が行われます。
68
+
69
+ したがって、(const char *)a でよいのです。