关于c++中函数原型声明的小讨论
2014-11-23 09:36
309 查看
或许我们都知道在写程序时如果把被调函数写到了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)>
先来看个程序:
#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++中函数指针的使用(包含对typedef用法的讨论)
- 关于C++中函数返回引用的讨论
- c++中关于数组作为函数参数并传递数组元素个数的几种有效方法的讨论
- 关于C++中函数指针的使用(包含对typedef用法的讨论)
- c++中关于数组作为函数参数并传递数组元素个数的几种有效方法的讨论
- 关于C++中函数指针的使用(包含对typedef用法的讨论)
- 关于C++中函数指针的使用(包含对typedef用法的讨论)
- 关于C++中函数指针的使用(包含对typedef用法的讨论)
- 关于C++中函数指针的使用(包含对typedef用法的讨论)
- 一个讨论引发关于js中函数声明,函数表达式,形参与变量声明赋值引发的一些事
- 关于C++中函数返回引用的讨论
- C++关于函数声明和定义中参数赋值为0调用问题演示
- 关于C++中函数返回引用的讨论
- C++: 关于function的declaration与definition的关系(函数声明和定义的关系)(并附一篇转载文章)
- C++中,函数声明时指针、引用相关的语义,定义方法原型时参考。
- 关于C++中函数返回引用的讨论
- 关于warning: function declaration isn’t a prototype(函数声明不是原型)的解决办法
- 关于C++中函数返回引用的讨论
- (转)关于C++中函数指针的使用(包含对typedef用法的讨论)
- 关于C++中函数指针的使用(包含对typedef用法的讨论)