学习C++.Primer.Plus 7 函数
- C++的返回值类型不能是数组
- 函数原型中的变量名相当于点位符,因此不要求提供变量名。
void cheers(int);
- C++中不指定参数列表时就使用活力号:
void saybye(...);
通常,仅当与接受可变参数的C函数(如printf())交互时才需要这样做。
- 静态类型检查:在编译阶段进行的原型化。
- 函数调用时将参量(实参)传递给参数(形参,函数定义中 用于接收参数而声明的变量)。
- cin>>输入时跳过前面的空格和换行符。
- 当且仅当用于函数头或函数原型中时,int arr[] 和 int *arr 才相同,都表示指针。
- 要传递数组类型 和 元素数量时,要分成两个参数来传递,而不能用方括号直接传:
void fillArray( int arr[], int size);
而不要使用下面的方法:
void fillArray(int arr[size]);
- 除了传递数组长度size以外,还可以传递两个指针来标示区间,第一个为指向第0元素,第二个指向最后一个元素的后面。
- 在声明或定义中用const标记形参数组时,表示不能在函数中使用该形参修改数组,而不代表原始数组的const与否。C++声明中const double ar[] 表示const double *ar.
void fillArray(const int arr[], int);
或
void fillArray(const int *arr, int)此时,const类型的地址只能赋给const指针。
- 当把形参的指针定义为const时,只能防止修改指针指向的值,不能防止修改指针的值:int *const pt 定义了不可修改地址的指针:
int age = ;
const int *pt = &age;//不能用pt修改age的值
int *const pt = &age;//可以用pt修改age的值,但pt只能指向age
const int *const pt = &age;//pt只能指向age,且不能用pt修改age的值 - 注意:只能在指针指向基本类型时(如数组),才可以使用const限定符,当它们是指针或指向指针的指针时,则不能使用const。比如下面的二维数组,表示的就是指针。
- 调用函数传递二维数组:
- 二维数组的数组名本身是指针,表示的是指向指针(列)的指针
int sum(int (*arr) [], int size);//arr指针指向另一个指针(指向长度为4的int数组的指针)
必须加括号,否则就成了长度为4的数组(数组里装的是指针),如下:
int *arr [];//表示长度为4的指针数组
也可以这样声明:
int sum( int arr[][], int size);
- 在声明参数arr时,没有使用const,因为这种技术只能用于指向基本类型的指针,而arr是指向指针的指针。
- 二维数组的数组名本身是指针,表示的是指向指针(列)的指针
- 不以空值字符结尾的char数组只是数组,而不是字符串。
- 结构可以直接像普通变量那样直接按值传递。但如果结构非常大时,可以按引用传递 或 传递结构的地址。
while(cin >> x >> y)
{
...
}- 函数指针
- 函数名表示的是函数的地址:假设think是一个函数,process调用think:
process(think);
- 函数指针的声明如下:
double pam(int);//函数声明
double (*pf) (int);//函数指针的声明需要带括号, 而不能用下面的:
double *pf (int);//声明了一个返回值为double指针的函数
- 此时(*pf)和pam是相同的。
- 函数名表示的是函数的地址:假设think是一个函数,process调用think:
学习C++.Primer.Plus 7 函数的更多相关文章
- 学习C++.Primer.Plus 8 函数探幽
1. 内联函数 普通函数调用: 存储调用指令的地址->将函数参数复制到堆栈->跳到函数地址执行代码(返回值放到寄存器)->跳回调用指令处 2. 当代码执行时间很短,且会被大量调用的 ...
- 我的MYSQL学习心得(六) 函数
我的MYSQL学习心得(六) 函数 我的MYSQL学习心得(一) 简单语法 我的MYSQL学习心得(二) 数据类型宽度 我的MYSQL学习心得(三) 查看字段长度 我的MYSQL学习心得(四) 数据类 ...
- 学习之"setjmp和longjmp函数"
Linux学习之"setjmp和longjmp函数" 转贴,原文地址:http://www.cnblogs.com/lq0729/archive/2011/10/23/2222 ...
- Lua和C++交互 学习记录之六:全局函数交互
主要内容转载自:子龙山人博客(强烈建议去子龙山人博客完全学习一遍) 部分内容查阅自:<Lua 5.3 参考手册>中文版 译者 云风 制作 Kavcc vs2013+lua-5.3.3 1 ...
- Hadoop源码学习笔记(2) ——进入main函数打印包信息
Hadoop源码学习笔记(2) ——进入main函数打印包信息 找到了main函数,也建立了快速启动的方法,然后我们就进去看一看. 进入NameNode和DataNode的主函数后,发现形式差不多: ...
- 学习LoadRunner之C语言函数
学习LoadRunner之C语言函数 Action() { /*strchr和strrchr的区别*/ /* char *strTest1="citms citms"; char ...
- Python学习,第八课 - 函数
本次讲解函数,由于内容比较多,小编列了个大纲,主要有一下内容: 1. 函数基本语法及特性 2. 函数参数 3.局部变量 4. 返回值 5.嵌套函数 6.递归 7.匿名函数 8.高阶函数 9.内置函数 ...
- C Primer Plus学习笔记(八)- 函数
函数简介 函数(function)是完成特定任务的独立程序代码单元 使用函数可以省去编写重复代码的苦差,函数能让程序更加模块化,提高程序代码的可读性,更方便后期修改.完善 #include <s ...
- 学习C++ Primer 的个人理解(一)
<C++ Primer>这本书可以说是公认的学习C++最好的书,但我觉得不是特别适合作为教材,书中内容的顺序让人有些蛋疼.我个人认为初学此书是不能跳着看的.如果急于上手的话,我更推荐< ...
随机推荐
- IntelliJ IDEA 使用总结[zz]
本文转自:http://cowboy-bebop.iteye.com/blog/1035550,仅做稍微整理,转载请注明出处. 1. IDEA内存优化 因机器本身的配置而配置: \IntelliJ I ...
- 使用开源免费类库在.net中操作Excel
自从上次找到NPOI之后,根据园友提供的线索以及Google,又找到了一些开源免费的类库,所以都简单体验了一遍. 主要找到以下类库: MyXls(http://sourceforge.net/proj ...
- iis中限制访问某个文件或某个类型的文件配置方法
Note:此处不是权限设置问题,此处不是权限设置问题,此处不是权限设置问题!只是出于数据或者网络安全,禁止扫描工具直接扫描到某些包含敏感信息的文件,尤其比如日志.配置等 默认ASP.NET已经考虑到了 ...
- Java代码获取NTP服务器时间
apache的commons-net包下面有ntp相关的实现类,主要类有: 1 org.apache.commons.net.ntp.NTPUDPClient ? 1 org.apache.com ...
- Python引用模块和查找模块路径
模块间相互独立相互引用是任何一种编程语言的基础能力.对于"模块"这个词在各种编程语言中或许是不同的,但我们可以简单认为一个程序文件是一个模块,文件里包含了类或者方法的定义.对于编译 ...
- jQuery中大于gt和小于lt
gt,lt计数都是下标从0开始,而且不论大小于,都不包括它自己本身. <!DOCTYPE html> <html> <head> <meta charset= ...
- Sqlserver2008 数据库镜像会话的初始连接
sqlserver2008 数据库镜像服务配置完成后,大家会发现我们有了两个数据库服务,这两个服务可以实现自动故障转移,那么我们的程序如何实现自动连接正常的数据库呢? 这个问题很简单,使用ADO.NE ...
- git错误:Target branch can't be blank
一.问题描述 遇到一个问题:Target branch can't be blank 因为问题再没有重现,所以拿一张网上的图: 情况是,比如a是项目的owner,有一个项目a/Project. b从a ...
- Javascript笔记----实现Page页面右下角置顶按钮.
从用博客开始,发现博客园中很多博友的博客中在Page右下角都有个图标,不论屏幕怎么拉伸,都始终停留在右下角.点击后页面置顶.后面想想写一个Demo来实现这种效果吧. 一. 图标右下角固定. 1.SS ...
- apache poi导出excel报表
Apache POI 是用Java编写的免费开源的跨平台的 Java API,Apache POI提供API给Java程式对Microsoft Office格式档案读和写的功能.POI为"P ...