C++程序设计及注意事项

一、函数返回值

1.如果是void类型函数,则表明函数没有返回值,此类函数不能采用表达式的方法进行调用

        如print();//只能以语句进行调用,不能采用表达式形式调用

2.当有返回值类型,如int,但函数表达式中没有return,则返回值为一个随机值

二、函数的参数:包括形式参数(定义时指定)和实际参数(调用时给定)

1.只有在调用时,才会给形式参数分配内存空间,否则并不实际占用内存。调用结束,则自动释放存储空间。

2.实际参数必须是确定的值。

3.实参与形参的类型数目需要保持一致,如果不一致,会按实参类型隐式转换形参类型。

三、函数声明

1.调用函数前,必须有一个函数声明

2.如果采用函数定义作为函数说明,则调用程序必须在定义程序之后

3.声明的作用是向编译器提供函数的接口信息

4.声明:

返回类型  函数名(类型1 形参1,类型2 形参2);

例如: int max(int a,int b);//声明一个max函数,其返回类型为int,两个输入为a,b,其类型均为int

5.函数调用可以采用

Z=max(x,y);//函数表达式调用

max(x,y);//函数调用

m=max(max(x,y),z);//函数实参

6.C++允许为形参指定默认值,如果调用时该形参变量未给定实参值,则使用该形参值,如果给定了,则采用实参值。

int add (int x,int y=1);//如果调用未给定y,则y=1

但在声明或定义中,只需要给定一次默认值即可,且如果有一个给定默认值,则其右边所有形参均需要给定默认值

四、内联函数

可以放在函数内部使用,但注意同样需要声明,且内联函数中不能使用循环和switch语句

inline 返回类型  函数名(形参)

{

        函数体

}

五、函数重载

指的是在同一个域中,用同一个函数名来定义多个函数,但其参数类型应有不同,编译器将通过实参和形参的类型、个数等确定最佳匹配调用,不同类函数不采用函数重载

六、函数模板

使用函数模板可以设置通用函数,

template<typename T>

T abs(T x)

{return x<0?-x:x;}//采用这个方式,则可以返回各类的变量的绝对值。

七、库函数

使用某些函数前,需要对添加其所属的库函数才可以正常使用,否则报错

暂时用到的:

#include<iostream>

#include<cmath>

https://blog.csdn.net/qq_60404548/article/details/123720819

八、函数调用

1.函数的嵌套调用:嵌套时要注意,函数的定义与声明,必须在函数调用以前。

#include<iostream>
#include<cmath>
using namespace std

double f(double x)
{
    return x*x*x-3*x-1;//求解相应的函数
}

double point(double a,double b)
{
    return (a*f(b)-b*f(a))/(f(a)-f(b));//求解弦与x轴交点
}

double root(double a,bouble b)
{
    double x,y1,y;
    y1=f(a);
    do{
        x=point(a,b);
        y=f(x);
        if (y*y1>0) y1=y,a=x;
        else b=x;
    }while(abs(y)>=0.00001);//判断精度,满足精度则退出循环
    return x;
}

int main()
{
    double a,b;
    cin>>a>>b;
    cout<<"root="<<root(a,b)<<endl;//计算并输出根
    return 0;
}

2.函数的递归调用

如果发现函数需要直接或间接的调用自己,则采用的是递归调用。(利用栈:先进后出,后进先出。)比如以下计算阶乘的函数

#include<iostream>
using namespace std;

int f(int n)
{
    if(n>1) return f(n-1)*n;
    else return 1;
}

int main()
{
    cout<<f(5)<<endl;//先算f(1),f(2)直至算出f(5)再return给main函数
    return 0;
}

九、局部变量与全局变量

1.局部变量为在函数内部定义的变量,形参,复合语句定义变量等;只能在定义的区域内使用,在外部无效如果变量所处子区域内有该变量,则该变量在子区域内无效,而子区域定义的这个变量才有效,即定义屏蔽

2.全局变量:在源文件中,函数外部定义的变量,为全局变量。其有效区域从定义变量位置开始到源文件结束。一般不建议使用。

十、C++实体作用域

1.变量或对象,函数,类型;同一作用域上,实体名字必须唯一,不同作用域上可以相同

2.前置声明可以使后面的实体作用域往前延申:

        extern 类型 变量名;//采用以下方式,可以将后面定义的变量,在前面使用

3.全局实体,可以变成只在某处使用的实体:多人编辑同一个项目时,一般在前面加static,使其只在某特定文件中使用,而不是全局,避免两人采用了同一函数名报错

        static  类型 变量名        

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值