c++语句
- 声明语句:
int stone;
指出变量的类型为int型,同时用变量stone标识存储在该内存单元中的值。 - 赋值语句:将值赋给存储单元。
stone=5;
或者pounds=stonetolb(stone);
- 初始化:在声明变量的同时给变量赋值。
int pou=14*sts;
#include <iostream>
using namespace std;
int stonetolb(int);
int main()
{
int stone;
int pounds;
cout << "Enter the weight in stone:" << endl;
cin>>stone;
pounds=stonetolb(stone);
cout<<stone<<" stone =";
cout<<pounds<<" pounds."<<endl;
return 0;
}
int stonetolb(int sts)
{
int pou=14*sts;
return pou;
}
函数的定义
函数类型 函数名(参数表)
{
函数体
}
int stonetolb(int sts)
{
int pou=14*sts;
return pou;
}
- 上述举例的函数中int表示函数stonetolb()的返回类型是int,即返回一个整数给调用函数;
int sts
是函数stonetolb()的参数,其由类型标识符和参数名组成。该函数只含有一组参数,而有些函数可有多组参数。
注意:
- c++的返回值的类型不能是数组。其他整数、浮点型、指针、对象和结构等都可以作为返回类型。
- 函数在执行返回语句后结束。若函数中包含多条返回语句(eg:位于不同的if else选项中),函数在执行遇到的第一条返回语句后结束。
函数的参数
主调函数:调用其他函数的函数,以main()函数最为常见。
被调函数:被调用的函数,常为库函数或者自定义函数。
实参:传递给函数的值。主调函数中的参数是实参。
形参:用于接收传递值得变量,被调函数中的参数为形参。
注意:
当函数有多个参数的时候,由于函数在调用的时候赋值顺序不一定,可能从左向右,也可能从右向左。
因此,实参的表达式中不能使用带有副作用的运算符,尤其是两个参数含有内在关联的时候。这是为了避免求值顺序不一致带来的二义性。
Eg:
fun(i++,i);
就是错误的。当从左到右,和从右到左顺序不一致时,两个参数数值不一致。
函数调用
函数原型的声明
函数原型的句法:
用户定义的函数若定义在main函数之后,则必须在main函数之前声明。
将需要调用接口函数的函数写于被调用的接口函数之前时候,需在调用的函数之前声明被调用的函数(说明接口函数的存在)
Ps:
1)在同一作用域内,函数虽可多次声明(但只能在原型声明中给出默认形参,在书写函数体时不予以初值。
(书写函数体内容之前就是对函数的再次声明)
但进入另一个作用域后,函数可再次声明,并且内层的默认形参可覆盖外层的默认形参数值。
2)如果三个形参变量中,既存在需要初始化的变量,也存在不予以初值的变量:形参的赋值从右往左(int a,int b=1,int c=2)
3)若书写几个函数,一个含默认形参,一个不含默认形参,或者初始化一部分形参的函数,这样的函数之间并不是重载的关系。
(形参类型以及数量并没有实质的改变)
4)使用含默认形参的函数重载时,注意防止二义性。
fun(int a,int b=1,int c=2);
fun(int a);
主函数中fun(x)
此时的函数调用会产生二义性,两个函数皆可以调用,并不知道该调用哪一个