c++ primer 学习笔记——函数的定义与声明

c++语句

  1. 声明语句:int stone;指出变量的类型为int型,同时用变量stone标识存储在该内存单元中的值。
  2. 赋值语句:将值赋给存储单元。stone=5;或者pounds=stonetolb(stone);
  3. 初始化:在声明变量的同时给变量赋值。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)
此时的函数调用会产生二义性,两个函数皆可以调用,并不知道该调用哪一个

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值