几天在写程序时定义了一个指针数组,在对他进行那个操作时,总是出错,估计是内存分配出了问题,于是就翻书,结果令我大吃一惊:教材上关于内存方面的问题几乎没有。
以下程序用vc6.0编译能通过,但是执行使出问题了,改用注释部分则对了。
#include <stdio.h> #include <string> void main(void) { int i, j; int count; char *p[] = {"Java","Basic","Delphi","List"}; count = sizeof(p)/sizeof(p[0]); int k; // char *m; char a[20]; for (i = 0; i < count; i++){ printf("%s ", p[i]); } printf ("\ncount = %d\n",count); for (j = 0; j < count; j++){ k = j; for (i = j; i < count; i++){ if (strcmp(p[k], p[i]) > 0){ k = i; } } // m = p[k]; // p[k] = p[j]; // p[j] = m; strcpy(a, p[k]); strcpy(p[k], p[j]); strcpy(p[j], a); } for (i = 0; i < count; i++){ printf ("%s ",p[i]); } printf ("\n"); // return 0; }