被那指针的指针、传地址等东东搞糊涂了! #if N <= 1000 static void insert_sort(char *strings[], int n) { char *v, *t; char **strp, **endp; int i; endp = &strings[N-1]; i = N-2; do { strp = &strings[i]; v = strp[0]; do { t = strp[1]; if (strcmp(v, t) <= 0) break; *strp++ = t; } while (strp < endp); strp[0] = v; } while (--i >= 0); } #endif 晕死,关键是这个 *strp++ = t; 理解错了,是*strp = t;strp ++;