关于c++中函数原型声明的小讨论
来源:互联网 发布:这个历史挺靠谱淘宝价 编辑:程序博客网 时间:2024/05/16 11:04
或许我们都知道在写程序时如果把被调函数写到了main()函数的后面,那么我们就必须在main()函数的前面对被调函数的原型进行声明。但是你知道这其中的原理吗?
先来看个程序:
#include<iostream>
using namespace std;
int main()
{
int a=1,b=2;
int s;
s=add(a,b);
cout<<"s="<<s<<endl;
return 0;
}
int add(int x,int y)
{
return x+y;
}
这个程序运行时会出现错误:error "add()" was not declared in this scope <错误的意思是说add是一个未声明的标示符>
要想理解这个错误形成的原因,就要先来了解一下这个程序的运行原理:
程序编译时总是从上向下编译,在上面的例子中,编译器首先会编译到被调函数add的语句,但是在add之前并没有任何add的信息,此时编译器就会报错。
现在,我们把上面的程序稍做一下修改:
#include<iostream>
using namespace std;
int add(int x,int y);
int main()
{
int a=1,b=2;
int s;
s=add(a,b);
cout<<"s="<<s<<endl;
return 0;
}
int add(int x,int y)
{
return x+y;
}
这样程序就没有错误了。
那么我们就来总结一下函数的声明所起到的作用吧!
编译器在遇到函数的声明时,就会知道被调函数的基本信息,包括函数的名称,函数的参数类型,函数有几个参数以及函数的返回值类型。这样在编译到函数的调用时就可以根据这些信息对函数调用的合法性进行检查。
函数声明有两种形式:
①.返回值类型 函数名(参数类型1,参数类型2,·······)<如:int add(int,int)>
②.返回值类型 函数名(参数类型1 参数名1,参数类型2 参数名2,······) <如:int add(int x,int y)>
- 关于c++中函数原型声明的小讨论
- 函数中关于“函数声明”“函数定义”“函数原型”的辨析
- 关于javascript原型链上属性查找的小讨论
- 关于C语言中scanf函数的讨论
- 关于C中字符/字符串输入函数的讨论
- C语言函数的声明以及函数原型
- 77 C语言函数的声明以及函数原型
- 关于C/C++函数声明中参数个数的疑问
- C 函数声明, 函数原型, 函数定义
- C中函数的声明
- 关于C中函数声明与定义
- 关于VC中时间函数的讨论
- 关于c语言中的复杂原型声明
- C中一种函数声明方式及可变参数函数讨论
- 关于软件原型方法若干问题的讨论
- 关于原型工具选择的讨论
- 关于C的讨论
- C编程中不容忽视的函数原型
- 【我的随感】为什么你会动摇?是自己一开始就错了吗?一定要学会放弃,但放弃前一定一定要慎重
- android实现程序的后台运行
- mysql的jdbc中fetchsize支持的问题
- swing实现的界面实例
- 1930年的上海是什么样
- 关于c++中函数原型声明的小讨论
- UVA--10827 Maximum sum on a torus
- 日语学习之沪江N4基础 20141123
- 从proc目录下的zoneinfo认识Linux内存管理
- 全面理解面向对象的 JavaScript
- What’s The Difference Between A Codec, Container And Video Format?
- 基于MFC和OpenCV的图像处理小软件
- 【BZOJ】【P3570】【DZY Loves Physics I】【题解】【树状数组】
- 数组中超过出现次数一半的数字 【微软面试100题 第七十四题】