没错啊 在vc6.0里运行正常
第一:只有一段代码,并且是查错,我希望能知道你的程序要做什么,现假设程序要做的是输出前这四个字符串,但是顺序倒过来,即输出:Coble,dBase,C language,Pascal;
第二:字符串数组a定义错误,a是一维的,不能包含4个字符串,并且数组名代表的即为地址,不能定义为指针类型,a应当定义为二维数组;
第三:p用于指向二维数组中的一个字符串,此时需要用到数组名a,而a是二级指针,赋给p时应当保证p的长度和二维数组的列数相同;
正确的程序如下:
#include "stdio.h"
void main()
{
char a[4][20]={"Pascal","C language","dBase","Coble"};
char (*p)[20];//定义p为一个长度为20的二级指针
int j;
p=a+3;
for(j=3;j>=0;j--)
printf("%s\n",*(p--));
}
记住,c++中,对于指针指向数组比C语言要严格,a和a[0]都表示数组a的首地址,但是性质不同,a是二级指针,简单说就是表示二维数组的一行,a[0]是一级指针,表示二维数组的一个元素。在C语言中可以不用考虑指针与数组的长度关系,但是C++必须相同才能赋值