博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
c++函数模块与其相关内容
阅读量:6812 次
发布时间:2019-06-26

本文共 3808 字,大约阅读时间需要 12 分钟。

一 函数的基本内容:

(1) 关于函数的定义:
通常分为有返回值与无返回值两类

void functionname( parameter list)                        {                                                statements ;                                                return ;                        }                        void functionname( parameter list)                        {                                                statements ;                                                return var ;                        }

(2) 数组作为函数参数:

int fill_array(double ar [] , int limit );                        int fill_array(double * ar  , int limit );                        //           都是在传递数组的地址,这个是一维函数的传递方式                        int fill_array( double (* ar)[5] , int limit );                        int fill_array( double ar [ ][5] , int limit );                        //           二维函数的传递方式

但在c++ 中用的更多的还是“超尾”的方法来实现的,也就是传递数组的首地址与尾地址来实现的,例如:

int sum_arr ( const int * begin , const int * end )                                 {                                                     const int * pt ;                                                     int total ;                                                      for ( pt = begin ; pt != end ; pt++ )                                                     total = total + *pt ;                                                     return total ;                                }

(3) 使用const在参数中:

以下面的这个例子来表明const在函数参数中的作用。

const int *  const pt = &age ;

其中第一个const表示pt所指向的那个数据是不可更改的;

而第二个const表明不可更改这个指针的指向。
(4)函数与array对象:

void show( std::array
da ); void show( std::array
* da ); // 使用的方式基本与数组相同 , 但是要注意一点 // 在使用指针时 da不同与数组那样是数组的地址,所以在使用时需要用 // (* da)来解除指针

(5)关于函数指针:

const double * ( *pa) ( const double * , int ) ;                                        /*                                                                   其中const double * 表示的是返回值的类型,                                                            为double 类型的指针;                                                            而(*pa) 则是表明这是一个函数的指针。                                        */                                        const double * ( *pa[3]) ( const double * , int ) ;                                        //                         表示为一个函数指针的数组

二 函数的深入内容:

1   内联函数:                    在任意函数声明或函数定义前加上关键字 inline ,那么这个函数就成为了内联函数。                    内联的作用与c语言中的宏函数作用基本相同。2   引用变量:                                                    int   initial =    value ;                                                    int & backup =  initial ;            在此中引用变量与原变量共用同一个地址,也就是说他们访问的其实是同一个内存单元;            在c++中使用引用这一特性,可以在函数减少一层指针的嵌套            ***但注意一点***:            当返回的类型为引用变量时需要注意绝不反回临时变量,因为此时临时变量在函数返回            时已经被释放,而返回为引用,两者使用同一个内存地址。但由于已经被释放,此时已            是非法访问。3 默认参数:            在函数的参数列表后加入 = value , 即设置了初始的值 ,如            int     harpo ( int n  , int m = 6 , int j = 8) ;            //       此时默认在参数没有传递时,m为6,j为84  函数重载与函数模板:            (1)     所谓的重载就是同一个函数名有不同的功能。                        函数重载只需要参数列表的类型不同则可实现              (2)        使用模板:                 template < typename T>                 void Swap (T & a  , T  &b ){                             T temp ;                             T  = a ;                             a  = b ;                             b  = T ;                    }                    //        同样的函数模板也是可以重载的只要参数的列表构成不同即可。                    在对结构体操作时需要对其使用显式声明                    template<>   void  Swap
( name & j1 , name & j2 );

ps:

关于一些简单的数据格式化内容:
cout.setf( ......... ) // 添加入所需要的格式化方式
ios_base::fixed ios_base::showpoint
cout.precision(n) // 设置输出小数为n位
cout.width(n) // 设置下次输出的长度,仅作用一次,需要重复设置

转载于:https://blog.51cto.com/13824643/2131946

你可能感兴趣的文章
读《王垠-天才是什么》有感
查看>>
MySql中PreparedStatement对象与Statement对象
查看>>
Unity3D使用经验总结 编辑器扩展篇
查看>>
openjudge 7622 求排列的逆序数(归并)
查看>>
利用express启一个server服务
查看>>
C#对IE使用Proxy(代理)
查看>>
sign签名算法一致算法-.net、java、golang
查看>>
Node.js简介与架构
查看>>
Entity Framework 异常档案
查看>>
如何成功发布一个MSMQ的Windows服务
查看>>
EntLib 3.1学习笔记(5) : Exception Handling Application Block
查看>>
工厂模式 接口 封装 实例
查看>>
bzoj1061 志愿者招募
查看>>
p2093 [国家集训队]JZPFAR
查看>>
枚举当前打开的所有窗口
查看>>
【COCOS2DX-LUA 脚本开发之十二】Hybrid模式-利用AssetsManager实现在线更新脚本文件lua、js、图片等资源(免去平台审核周期)...
查看>>
GDI+中发生一般性错误的解决办法(转)
查看>>
【Selenium】1.介绍 Selenium
查看>>
wxpython仿写记事本
查看>>
MM 常用表
查看>>