(你需要复习一下C语言和程序设计) int main () { char a[3] = {'i', 'n', 'g'}; char b[5] = {'r', 'e', 'v', 'i', 'n'}; char *p, *q; p = &a; /* 类型不对,编译错误。应该写 p = a; */ q = &b; /* 同上 */ PSeqString s1 = CreateString(p); /* 声明不能出现在语句之后,编译错误 */ PSeqString s2 = CreateString(q); /* 同上 */ ... ... } 最大的错误是两个“字符串”变量说明。由于没地方放结束符 '\0',它们可能导致程序运行中崩溃。 上面程序里还有一些冗余的东西。修改后的具有同样功能的程序段是: int main () { PSeqString s1 = CreateString("ing"); PSeqString s2 = CreateString("revin"); ... ... } 既简单又没错。为什么写那么长呢?