C语言:下面的代码为什么会出现编译错误?应当怎么改正?

#include "stdio.h"
int sum(int a, int b);
int (*a)(int, int);
a=sum;
int main(){
printf("%d\n",a(3,5));
return 0;
}
int sum(int a,int b){
return a+b;
}

错误出在a=sum;这一句——因为构成C语言程序的基本单位是函数而不是C语句,这里的a=sum;不在任何函数中,所以编译器无法处理而出错。把它放到主函数中的printf("%d\n",a(3,5));之前就可以了。函数外只能进行全局变量定义或声明,而不能进行其他操作,所以把int (*a)(int, int);  a=sum;两句改成int (*a)(int, int)=sum;,让它成为声明变量a并初始化为sum也是可以的。你可以试试。

代码文本:

#include "stdio.h"

int sum(int a, int b);

int (*a)(int, int);

int main(int argc,char *argv[]){

a=sum;

printf("%d\n",a(3,5));

return 0;

}

int sum(int a,int b){

return a+b;

}

温馨提示:内容为网友见解,仅供参考
第1个回答  2020-08-24
a=sum;应放入main中。
将其移到printf...的前一行。
第2个回答  2020-08-25

a=sum;这是条可执行的语句,因它不属于任何函数因此会报错,可以将它移动到main函数的一对大括号之中去,比如printf语句之前。

为什么C语言会出现编译错误?
1、一段简单的 C 语言代码,其功能为接收一个 double 类型变量输入,并输出接收到的值。2、编译该程序,并没有编译错误出现。3、然而,在运行程序时,出现了错误。4、因此,当我们需要接收 double 类型变量输入时,应指定 %lf。5、下面为更改之后正确的代码。更改之后,程序就可以正常运行了。

C语言为什么会出现编译错误?
C语言程序出现编译错误,一般由以下几个原因之一或共同引起:1. 编程语法错误 如:char *p = 'abc';2. 存在无法编译的项目或引用 如没有定义某个变量却试图使用它 3.变量或函数重名、变量名称超过255个字节,编码错误等硬性规定的违法行为 4.设置了跳转段但找不到对应编号这样的...

C语言中,为什么这样的代码编译时出错i undeclared(first use in this...
出现此问题的原因为:设置错误造成的。解决的方法和详细的操作步骤如下:1、首先,使用未声明的标识符“ p”的警告,表示此处存在无法识别的p,如下图所示,然后进入下一步。2、其次, p值可以直接找到。 p下有一个_,表示出现了问题,如下图所示,然后进入下一步。3、接着,完成上述步骤后,如...

c语言 编程 代码 为什么会出现这种错误 怎么解决?
产生这个问题可能的原因 1, 你用vc建了一个控制台程序,它的入口函数应该是main, 而你使用了WinMain.2. 你用vc打开了一个.c\/.cpp 文件,然后直接编译这个文件,这个文件中使用了WinMian而不是main作为入口函数。vc这时的默认设置是针对控制台程序的。解决方法 1.进入project->setting->c\/c++, ...

为什么C语言代码会报错
C语言代码报错的原因可能有很多种,以下是一些常见的原因:语法错误:C语言有严格的语法规则,如果代码不符合语法规则,编译器就会报错。例如,忘记在语句末尾加上分号、括号不匹配、关键字拼写错误等。类型错误:C语言对变量的类型要求很严格,如果变量类型不匹配,就会报错。例如,将一个字符串赋值给一个...

C语言的运行出现不了的问题是什么问题??
C语言代码运行不出现象可能有很多原因,以下是一些常见的原因和解决方法:编译错误:代码中存在语法错误或类型错误,导致编译失败。可以通过编译器的错误提示信息来定位错误,逐一修正后重新编译。运行错误:代码编译成功,但在运行时出现错误,如数组越界、空指针、除零等错误。可以通过调试工具或打印调试信息...

对于C语言编程出了错,怎么能快速找出错误呢?
代码是否存在逻辑错误:1、变量使用前未被数值 实例:int main(){ int x=5,y,z;z=x*y;printf("%d",z);return 0;} 在此程序中变量y在使用之前未被赋值,所以结果输出z的值就会是系统随机分配一个值给y再加乘以x的值。2、把赋值赋值符号“=”与等于符号“==”相混淆 实例:有一下语句:...

为什么c语言程序在运行时出现错误?
出现这个报错的原因是:代码输入过程中出现全角输入,将代码中括号、分号等用半角字符替换即可。根据题目给出的提示,请检查一下第51行代码,将51行代码中出现的全角符号替换成半角字符,或者输了重新输入就行。

【c语言问题】为什么下面两行代码运行会出错,请解释。
char *a = "baidu";这儿是常量字符串,值是不能改变的,所以运行时要报错,你可以char a[]="baidu";

求助:为什么每次我做c语言的时候都会这样,一般不是会指出哪里错了吗?而...
“CL.exe”是VC使用真正的编译器(编译程序),其路径在“VC根目录\/VC98\/Bin”下面, 你可以到相应的路径下找到这个应用程序。方法一:因此问题可以按照以下方法解决:打开vc界面 点击VC“TOOLS(工具)”—>“Option(选择)” —>“Directories(目录)”重新设置“Excutable Fils、Include Files、 ...

相似回答