这个程序哪里出错了?

#include "stdio.h"
void main()
{
char *a[]={"Pascal","C language","dBase","Coble"};
char (**p)[];
int j;
p=a+3;
for(j=3;j>=0;j--)
printf("%s\n",*(p--));
}

没错啊 在vc6.0里运行正常

追问

我在运行的时候,总是显示有一个错误?

追答

什么错误啊 我都运行了 是你想要的结构啊

你把错误给我看看

追问

你运行的结果是什么样的?

追答

刚才给你贴图了啊 是这样的
Coble
dBase
C language
Pascal
Press any key to continue

追问

E:\Sugar\1\1.cpp(7) : error C2440: '=' : cannot convert from 'char ** ' to 'char (** )[]'
Types pointed to are unrelated; conversion requires reinterpret_cast, C-style cast or function-style cast
执行 cl.exe 时出错.

我同学运行的时候也有错误。

追答

我的没错啊 只有有个警告
要不你把程序改成这样 试试
#include "stdio.h"
void main()
{
char *a[]={"Pascal","C language","dBase","Coble"};
char **p;
int j;
p=a+3;
for(j=3;j>=0;j--)
printf("%s\n",*(p--));
}

温馨提示:内容为网友见解,仅供参考
第1个回答  2011-04-08
第一:只有一段代码,并且是查错,我希望能知道你的程序要做什么,现假设程序要做的是输出前这四个字符串,但是顺序倒过来,即输出: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++必须相同才能赋值

出现应用程序出错怎么回事
应用程序出错可能由多种原因导致。一方面,这可能是由于应用程序没有正确检查内存分配失败。当程序需要内存来储存数据时,如果内存分配失败且程序没有检查这个错误,就可能会尝试使用无效的内存地址,从而导致程序崩溃。另一方面,应用程序自身的BUG、木马病毒、操作系统的问题以及硬件故障等也可能导致应用程序出错...

c语言程序 哪里出错了呢 始终运行不出结果
在C语言编程中,若程序始终无法输出结果,可能是因为输入数据的类型与程序调用的数据类型不一致。以scanf函数为例,当使用 scanf("%lf%lf%lf",&a,&b,&c);进行输入时,确实将输入的数字以float类型存储至内存中。然而,程序在读取这些内存时,可能期望以double类型进行解析。这种类型不匹配会导致解析出...

如何解决电脑出现应用程序错误问题?
一,电脑出现应用程序错误的原因1.当我们的电脑被病毒和木马破坏时,就会出现应用错误。2.当我们的操作不当导致应用程序的组件丢失和损坏时,也会出现应用程序错误。3.当计算机系统或软件发生冲突时,也会导致应用程序出错。4.当计算机硬件出现故障时,也会导致应用程序出错。二、电脑出现应用程序错误的解决...

为什么我的电脑程序总是出错啊?
1.软件问题:应用程序可能存在bug或错误,导致崩溃或无法正常运行。这可能是由于开发人员的错误、版本不兼容性或其他软件故障引起的。2.硬件问题:有时应用程序错误可能是由于硬件问题引起的,如内存故障、硬盘故障或其他硬件故障。这些问题可能导致应用程序崩溃或产生错误提示。3.操作系统问题:应用程序可能与...

应用程序错误??
应该是软件不兼容或者配置错误造成的,解决方法如下。1、首先电脑开机,弹出应用程序错误提醒,按下键盘win+r。2、然后在弹出的运行框里,输入cmd回车,如下图所示。3、接着在打开的窗口中,输入以下代码回车,如下图所示。4、这样硬盘就修复完成了,如下图所示问题解决成功了。如果应用程序出错的提示是...

安装程序出错怎么办?
这个问题可能是由于缺失或损坏的安装文件、磁盘空间不足、权限问题或者Windows Update服务故障导致的。1. 缺失或损坏的安装文件:当你尝试安装某个程序或更新Windows时,如果所需的文件损坏或下载不完整,就可能会遇到这个错误。解决这个问题的办法是重新下载文件或安装程序,确保来源可靠。例如,如果是从官方...

电脑出现应用程序错误的原因及解决办法
电脑常显示应用程序错误的解决方法 该内存不能read written常见原因及解决方法 1、内存条坏了,更换内存条 2、双内存不兼容,使用同品牌的内存或只要一条内存 3、内存质量问题,更换内存条 4、散热问题,加强机箱内部的散热 5、内存和主板没插好或其他硬件不兼容,重插内存或换个插槽 6、硬件有问题,...

怎么查找应用程序出错的位置?
查找应用程序出错的位置方法:1、一般程序的安装位置在C:\\Program Files (x86)或者C:\\Program Files,可以在这两个目录中查找安装程序。2、如果程序存在桌面快截方式,可以右键程序的快截方式,选择“属性”。在弹出的窗口中,点击“打开文件位置(F)”,即可找到程序所在的文件目录。3、如果程序已经运行...

c语言中这个程序哪个地方出错了?为什么输出的是nan?
程序已经改好:include<stdio.h>#include<math.h>double f(double x){return sqrt(4-x*x);}double ladderShape(double a,double b){double s1,s2,n,i,h,s,m=1e-10; \/\/有改动s2=0;n=100;do{s1=s2;n=2*n;h=(b-a)\/n;i=1;s2=0; \/\/有改动do{s=(f(a+i*h)+f(a...

c语言:如图,请问一下哪里出错了?
首先解答一下这个C语言代码出错的原因:第一个gets未定义:出现这个错误一般是没有包含相应的头文件,或者库里没有这个函数。这里应该是没有这个函数。gets(char *dest)是一个老的库函数,采用这个函数存在越界的安全隐患。它只有一个参数,如果输入的字符个数超过dest内存空间,程序可能失败,也可能被黑客...

相似回答