回答編集履歴
2
(==X)to
test
CHANGED
@@ -54,7 +54,7 @@
|
|
54
54
|
|
55
55
|
今、qsort() がソートしようとする配列は char *p[] という、文字列へのポインタが並ぶ配列です。
|
56
56
|
|
57
|
-
pstrcmp()
|
57
|
+
pstrcmp() を比較関数と呼びます。比較関数は何のためにあるか。それは qsort() が比較関数 pstrcmp() を呼び出し、配列の中の2つの要素の大小関係を知るためです。
|
58
58
|
|
59
59
|
|
60
60
|
|
@@ -72,7 +72,7 @@
|
|
72
72
|
|
73
73
|
一方、比較関数 pstrcmp() 側。
|
74
74
|
|
75
|
-
渡ってきた引数 x, y から、それぞれ x がポイントする p[s] の値と、 y がポイントする p[t] の値を引数にして、strcmp(*x, *y) と呼び出したいわけです。
|
75
|
+
渡ってきた引数 x, y から、それぞれ x がポイントする p[s] の値(== X)と、 y がポイントする p[t] の値(== Y)を引数にして、strcmp(*x, *y) と呼び出したいわけです。
|
76
76
|
|
77
77
|
しかし、void型ポインタにはメモリを操作できないという制約があり、p[s], p[t] を読みだすことができません。そこで ** x, y を ```char ** ``` 型であると見做す必要がある**のです。
|
78
78
|
|
1
図をアップデート。x, y に値を入れた
test
CHANGED
@@ -38,9 +38,7 @@
|
|
38
38
|
|
39
39
|
|
40
40
|
|
41
|
-
![メモリのイメージ](
|
41
|
+
![メモリのイメージ](cba151c78b4c492420476e04337f154a.jpeg)
|
42
|
-
|
43
|
-
|
44
42
|
|
45
43
|
|
46
44
|
|