6.1  Function Basics

一、函数的构造

type functionName( parameters list)
statement

1、首先格式如上,一个函数一定要有返回值的类型type,函数名functionName,还有括号内的参数列表,以及主要的函数的内容。

2、返回值:

(1)就是return,首先,return的值一般要和返回值类型相同,否则就转换成返回值类型,但是如果没有转换的方法就会出错。

(2)return的作用主要是两个,一个就是结束函数,回到调用的地方,另外一个就是然会一个值。

(3)返回值类型可以是void,那么return就只有结束函数的作用了~

3、参数列表

(1)一个参数一定要跟着一个类型,不可以有例外。

(2)参数的名字不可以相同,函数内的名字也不可以和参数列表内的相同

4、调用

切记调用的时候使用的参数类型要与参数列表一一对应。

二、Local Object

1、local variables:

这个很好理解,就是定义的变量,如果在{}内,那它的作用域就只在这个{}的范围内。

2、全局变量

就是在函数外定义的,那么,这个变量就可以在它定义之后的任何一处代码中使用

3、Local static objects

这种变量不会随着{}的结束而结束,它存在于整个程序的生命周期,然后这种变量的定义和初始化语句只执行一次。

6.2   Argument Passing

一、传参数的方法

重点就是传参数的2种方法

void  func(int i)
{ }

1、就是这种简单的方法。此种方法是通过复制一遍的方法来创建一个新的参数i。注意点就是

(1)不能通过改变i来改变原有的值。

(2)在对大的类或者参数进行拷贝的时候是很浪费时间的。

(3)对于指针的复制,因为同样指向同一个对象,所以可以通过指针来改变他的值。

void  func2(int &i)
{
}

2、通过这样引用的方法,就会将i和传入的变量绑定在一起,可以直接改变他的值。

PS:一般用引用的方法来替代copy,然后应该如果为了防止不小心被改变,则应该加上const就OK。

二、Array  Parameters

主要有2种方法引用,一种是指针,另一种是引用

1、指针的三种用法(确定长度)

(1)

void print(const char *cp)
{
     if(cp)         //就是判断是否是空指针
          ……
}

PS:

     const char *p; 常量指针,指向一块区域,这块区域不可写,只能读。
char * const p; 指针常量,指向一块区域,这块区域可读可写,但是指针的值初始后就不能改,
                     类似于一般常量。

(2)

void print(const int*beg,const int *end)
{
while(beg!=end)
{
cout<<*beg++<<endl;
}
}

这里就是使用的库函数,使用begin()获得头指针,end()来获得尾指针。

(3)

void print(const int ia[],size_t size)
{
for(size_t i=;i!=size;++i)
{
cout<<ia[i]<<endl;
}
}

这里就是手动的定位长度,自己再传入一个变量这样子。

2、引用的方法。

void print(int (&arr)[])
{
for(auto elem:arr)
cout<<elem<<endl;
}

由于优先级的问题,在传入指针数组的时候,需要加上一个括号,保证是传入的是这10元素的头指针。

3、附加多维指针的方法,就是说,当恒数组的数组,所以要保证列是已知的,然后按上面的方法确定行数。

C++primer学习笔记(四)——Chapter 6的更多相关文章

  1. C#可扩展编程之MEF学习笔记(四):见证奇迹的时刻

    前面三篇讲了MEF的基础和基本到导入导出方法,下面就是见证MEF真正魅力所在的时刻.如果没有看过前面的文章,请到我的博客首页查看. 前面我们都是在一个项目中写了一个类来测试的,但实际开发中,我们往往要 ...

  2. IOS学习笔记(四)之UITextField和UITextView控件学习

    IOS学习笔记(四)之UITextField和UITextView控件学习(博客地址:http://blog.csdn.net/developer_jiangqq) Author:hmjiangqq ...

  3. java之jvm学习笔记四(安全管理器)

    java之jvm学习笔记四(安全管理器) 前面已经简述了java的安全模型的两个组成部分(类装载器,class文件校验器),接下来学习的是java安全模型的另外一个重要组成部分安全管理器. 安全管理器 ...

  4. Learning ROS for Robotics Programming Second Edition学习笔记(四) indigo devices

    中文译著已经出版,详情请参考:http://blog.csdn.net/ZhangRelay/article/category/6506865 Learning ROS for Robotics Pr ...

  5. Typescript 学习笔记四:回忆ES5 中的类

    中文网:https://www.tslang.cn/ 官网:http://www.typescriptlang.org/ 目录: Typescript 学习笔记一:介绍.安装.编译 Typescrip ...

  6. ES6学习笔记<四> default、rest、Multi-line Strings

    default 参数默认值 在实际开发 有时需要给一些参数默认值. 在ES6之前一般都这么处理参数默认值 function add(val_1,val_2){ val_1 = val_1 || 10; ...

  7. muduo网络库学习笔记(四) 通过eventfd实现的事件通知机制

    目录 muduo网络库学习笔记(四) 通过eventfd实现的事件通知机制 eventfd的使用 eventfd系统函数 使用示例 EventLoop对eventfd的封装 工作时序 runInLoo ...

  8. python3.4学习笔记(四) 3.x和2.x的区别,持续更新

    python3.4学习笔记(四) 3.x和2.x的区别 在2.x中:print html,3.x中必须改成:print(html) import urllib2ImportError: No modu ...

  9. C++ Primer学习笔记(三) C++中函数是一种类型!!!

    C++中函数是一种类型!C++中函数是一种类型!C++中函数是一种类型! 函数名就是变量!函数名就是变量!函数名就是变量! (---20160618最新消息,函数名不是变量名...囧) (---201 ...

  10. C++ Primer学习笔记(二)

    题外话:一工作起来就没有大段的时间学习了,如何充分利用碎片时间是个好问题. 接  C++ Primer学习笔记(一)   27.与 vector 类型相比,数组的显著缺陷在于:数组的长度是固定的,无法 ...

随机推荐

  1. SQL中CONVERT转化函数的用法

    格式:CONVERT(data_type,expression[,style])说明:此样式一般在时间类型(datetime,smalldatetime)与字符串类型(nchar,nvarchar,c ...

  2. SVN服务器搭建--Subversio与TortoiseSVN的配置安装

    SVN服务器搭建和使用(一) Subversion是优秀的版本控制工具,其具体的的优点和详细介绍,这里就不再多说. 首先来下载和搭建SVN服务器. 现在Subversion已经迁移到apache网站上 ...

  3. jquery autocomplete 简单实用例子

    <link href="../../themes/default/css/jquery.ui.all.css" rel="stylesheet" type ...

  4. 看过《大湿教我写.net通用权限框架(1)之菜单导航篇》之后发生的事(续)——主界面

    引言 在UML系列学习中的小插曲:看过<大湿教我写.net通用权限框架(1)之菜单导航篇>之后发生的事 在上篇中只拿登录界面练练手,不把主界面抠出来,实在难受,严重的强迫症啊.之前一直在总 ...

  5. 导出Excel之Epplus使用教程3(图表设置)

    导出Excel之Epplus使用教程1(基本介绍) 导出Excel之Epplus使用教程2(样式设置) 导出Excel之Epplus使用教程3(图表设置) 导出Excel之Epplus使用教程4(其他 ...

  6. Windows 的 AD 域寄生于 Linux 机器

    导读 对于帐户统一管理系统或软件来说,在 Linux 下你可能知道 NIS.OpenLDAP.samba 或者是 RedHat.IBM 的产品,在 Windows 下当然就是最出名的活动目录 (AD) ...

  7. 解决eclipse+MAVEN提示One or more constraints have not been satisfied.的问题

    应用版本:eclipse luna4.4.1 JDK:1.8 Maven:3.2.5 问题现象: 1.编译工程后总该是显示下面两个错误: One or more constraints have no ...

  8. InnoDB主键设计

    InnoDB是clustered-index table,因此对于InnoDB而言,主键具有特殊意义. 可以通过主键直接定位到对应的某一数据行记录的物理位置,主键索引指向对应行记录,其他索引则都指向主 ...

  9. java面试总结-(hibernate ibatis struts2 spring)

    说说Hibernate对象的三种状态 Hibernate对象有三种状态,分别是:临时态(Transient). 持久态(Persistent).游离态(Detached). 临时状态:是指从对象通过n ...

  10. C++复数四则运算的实现

    程序主要实现复数的加减乘,数乘,取共轭功能. 将所有函数都定义为了成员函数. 使用库函数atof将字符串转换为浮点型数据. 函数主要难点在于处理输入.由于需要判断输入是选择退出还是继续,所以用字符串来 ...