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. linux 访问tomcat 管理页面时 You are not authorized to view this page 403(真实可用)

    ava代码 收藏代码 You are not authorized to view this page. If you have not changed any configuration files ...

  2. iOS-(kCFStreamErrorDomainSSL, -9802)

    kCFStreamErrorDomainSSL, -9802 我是微博授权时get页面时候碰到的 其实就是http安全问题 在info.plist里添加并设置Allow Arbitrary Loads ...

  3. [整理]通过AngularJS directive对bootstrap日期控件的的简单包装

    最近项目上了AngularJS,而原来使用的日期控件的使用方式也需要改变,于是开始了倒腾,看了官方的例子,可以使用AngularJS的directive做简单的处理,这样在html里直接使用申明的的形 ...

  4. <转>错误 x error LNK1104: 无法打开文件“E:\xxxx\Debug\xxxx.exe”

    刚刚还好好的,怎么突然就出现这样的错误, 后来分析原因, 第一:查看那个exe文件是否存在, 第二:查看那个文件或者那个文件所在的文件夹是否打开或者改名字等等操作占用着这个文件. 第三:重新清理并生成 ...

  5. Windows主机里利用VMware安装Linux(CentOS)虚拟机,Host-only连接上网方式详解

    关于Host-only指的是主机与虚拟机之间的互联,因此虚拟机是不能连网的,若需要连网则需要使用NAT模式: Host-only模式实现联网得考虑如下配置过程: 附:VMware虚拟机三种网络模式(B ...

  6. c++字符串详解(转)

    之所以抛弃char*的字符串而选用C++标准程序库中的string类,是因为他和前者比较起来,不必担心内存是否足够.字符串长度等等,而且作为一个类出现,他集成的操作函数足以完成我们大多数情况下(甚至是 ...

  7. First Missing Positive

    不好想,用桶排序解决. int findMissingPostive(int A[], int n) { bucket_sort(A, n); ; i < n; i++) ) ; ; } voi ...

  8. svn安装【转载】

    SVN简介        SVN全名Subversion,即版本控制系统.SVN与CVS一样,是一个跨平台的软件,支持大多数常见的操作系统.作为一个开源的版本控制系统,Subversion管理着随时间 ...

  9. linux shell 字符串操作详解 (长度,读取,替换,截取,连接,对比,删除,位置 )

    在做shell批处理程序时候,经常会涉及到字符串相关操作.有很多命令语句,如:awk,sed都可以做字符串各种操作. 其实shell内置一系列操作符号,可以达到类似效果,大家知道,使用内部操作符会省略 ...

  10. 3Sum Closest & 3Sum Smaller

    Given an array S of n integers, find three integers in S such that the sum is closest to a given num ...