028-86922220

建站动态

根据您的个性需求进行定制 先人一步 抢占小程序红利时代

C++中函数怎么用

这篇文章给大家分享的是有关C++中函数怎么用的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。

公司主营业务:成都网站建设、网站设计、移动网站开发等业务。帮助企业客户真正实现互联网宣传,提高企业的竞争能力。创新互联建站是一支青春激扬、勤奋敬业、活力青春激扬、勤奋敬业、活力澎湃、和谐高效的团队。公司秉承以“开放、自由、严谨、自律”为核心的企业文化,感谢他们对我们的高要求,感谢他们从不同领域给我们带来的挑战,让我们激情的团队有机会用头脑与智慧不断的给客户带来惊喜。创新互联建站推出锡山免费做网站回馈大家。

第六章 函数

函数是一个命名了的代码块,通过调用函数执行相应的代码。

函数基础

局部对象
函数声明

参数传递

如果形参是引用类型,它将绑定到对应的实参上;否则,将实参的值拷贝后赋给形参。
- 如果无需修改引用形参的值,最好将其声明为常量引用。

main:处理命令行选项

假设main函数位于可执行文件prog内,我们可以向程序传递下面的选项:

prog -d -o ofile data0

这些命令通过两个可选的形参传递给main函数:

int main(int argc, char *argv[]) {...}
//或:
int main(int argc, char **argv) {...}

当实参传给main函数之后,argv的第一个元素指向程序的名字或者一个空字符串,接下来的元素一次传递命令行提供的实参。最后一个指针只会掉元素值保证为0。
- 以上面的命令行为例:

argc = 5;argv[0] = "prog";argv[1] = "-d";argv[2] = "-o";argv[3] = "ofile";argv[4] = "data0";argv[5] = 0;

含有可变形参的函数

返回类型和return语句

主函数main的返回值
返回数组指针
  1. 使用类型别名

    typedef int arrT[10];   //arrT是一个类型别名,它表示的类型是含有10个整数的数组
    using arrT = int[10];   //与上一句等价
    arrT* func(int i);      //func返回一个指向含有10个整数的数组的指针

  2. 声明一个返回数组指针的函数,形式如下

    Type (*function(parameter_list)) [dimension]
    //Type表示返回的数组指针指向的数组元素类型
    //dimension表示数组的大小
    //例如:
    int (*func(int i)) [10];

  3. 使用尾置返回类型(C++11)

    auto func(int i) -> int(*)[10];

  4. 使用decltype

    int odd[] = {1,3,5,7,9};
    int even[] = {0,2,4,6,8};
    decltype(odd) *arrPtr(int i)
    {
    return (i % 2) ? &odd : &even;  //返回一个指向数组的指针
    }

函数重载

如果同一作用域内的几个函数名字相同但形参列表不同,我们称之为重载(overloaded)函数

特殊用途语言特性

介绍三种函数相关的语言特性:默认实参、内联函数、constexpr函数。

默认实参
内联函数(inline)

调用函数一般比求等价表达式的值要慢,内联函数可避免函数调用的开销。
- 将函数指定为内联函数,通常就是将它在每个调用点上“内联地”展开。

constexpr函数
内联函数和constexpr函数通常定义在头文件中

调试帮助

程序可以包含一些用于调试的代码,但这些代码只在开发程序时使用。当应用程序编写完成准备发布时,要先屏蔽掉调试代码。这种方法用到两项预处理功能:assert和NDEBUG。

assert预处理宏
#include assert(expr);//首先对expr求值,//如果表达式为假(即0),assert输出信息并终止程序的执行。//如果表达式为真(即非0),assert什么也不做。//例如:对一个文本进行操作的程序可能要求所给定单词的长度都大于某个阈值。assert(word.size() > threshold;
NDEBUG预处理变量
//如果定义了NDEBUG,#ifndef和#endif之间的代码将被忽略void print(const int ia[], aize_t size)
{    #ifndef NDEBUG
        //_ _func_ _是编译器定义的一个局部静态变量,用于存放函数的名字,它是const char的一个静态数组。
        cerr << _ _func_ _ << "array size is " << size << endl;    #endif}

除了_ _ func _ _之外,还有其它四个名字:

_ _FILE_ _ 存放文件名的字符串字面值
_ _LINE_ _ 存放当前行号的整型字面值
_ _TIME_ _ 存放文件编译时间的字符串字面值
_ _DATA_ _ 存放文件编译日期的字符串字面值

函数指针

bool lengthCompare(const string &, const string &);//pf指向一个函数,该函数的参数是两个const string的引用,返回值是bool类型。注意圆括号必不可少bool (*pf) (const string &, const string &);    //未初始化

当我们把函数名作为值使用时,该函数自动地转换成指针

pf = lengthCompare;     //pf指向名为lengthCompare的函数pf = &lengthCompare;    //等价赋值语句,&是可选的

调用该函数:

//此三个调用等价bool b1 = pf("hello", "goodbye");bool b2 = (*pf)("hello", "goodbye");bool b3 = lengthCompare("hello", "goodbye");

感谢各位的阅读!关于“C++中函数怎么用”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,让大家可以学到更多知识,如果觉得文章不错,可以把它分享出去让更多的人看到吧!


文章名称:C++中函数怎么用
网站路径:http://www.tsicrk.com/article/iihess.html

其他资讯

让你的专属顾问为你服务

0.6423s