C++primer学习笔记(四)——Chapter 6
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的更多相关文章
- C#可扩展编程之MEF学习笔记(四):见证奇迹的时刻
前面三篇讲了MEF的基础和基本到导入导出方法,下面就是见证MEF真正魅力所在的时刻.如果没有看过前面的文章,请到我的博客首页查看. 前面我们都是在一个项目中写了一个类来测试的,但实际开发中,我们往往要 ...
- IOS学习笔记(四)之UITextField和UITextView控件学习
IOS学习笔记(四)之UITextField和UITextView控件学习(博客地址:http://blog.csdn.net/developer_jiangqq) Author:hmjiangqq ...
- java之jvm学习笔记四(安全管理器)
java之jvm学习笔记四(安全管理器) 前面已经简述了java的安全模型的两个组成部分(类装载器,class文件校验器),接下来学习的是java安全模型的另外一个重要组成部分安全管理器. 安全管理器 ...
- Learning ROS for Robotics Programming Second Edition学习笔记(四) indigo devices
中文译著已经出版,详情请参考:http://blog.csdn.net/ZhangRelay/article/category/6506865 Learning ROS for Robotics Pr ...
- Typescript 学习笔记四:回忆ES5 中的类
中文网:https://www.tslang.cn/ 官网:http://www.typescriptlang.org/ 目录: Typescript 学习笔记一:介绍.安装.编译 Typescrip ...
- ES6学习笔记<四> default、rest、Multi-line Strings
default 参数默认值 在实际开发 有时需要给一些参数默认值. 在ES6之前一般都这么处理参数默认值 function add(val_1,val_2){ val_1 = val_1 || 10; ...
- muduo网络库学习笔记(四) 通过eventfd实现的事件通知机制
目录 muduo网络库学习笔记(四) 通过eventfd实现的事件通知机制 eventfd的使用 eventfd系统函数 使用示例 EventLoop对eventfd的封装 工作时序 runInLoo ...
- python3.4学习笔记(四) 3.x和2.x的区别,持续更新
python3.4学习笔记(四) 3.x和2.x的区别 在2.x中:print html,3.x中必须改成:print(html) import urllib2ImportError: No modu ...
- C++ Primer学习笔记(三) C++中函数是一种类型!!!
C++中函数是一种类型!C++中函数是一种类型!C++中函数是一种类型! 函数名就是变量!函数名就是变量!函数名就是变量! (---20160618最新消息,函数名不是变量名...囧) (---201 ...
- C++ Primer学习笔记(二)
题外话:一工作起来就没有大段的时间学习了,如何充分利用碎片时间是个好问题. 接 C++ Primer学习笔记(一) 27.与 vector 类型相比,数组的显著缺陷在于:数组的长度是固定的,无法 ...
随机推荐
- MySql开启事务
CREATE PROCEDURE test_sp1( ) BEGIN ; ; START TRANSACTION; INSERT INTO test VALUES(NULL, 'test sql 00 ...
- metinfo首页内容简介
http://www.hlbaozhuangji.cn/manage/content/other_info.php?anyid=31&lang=cn 首页内容简介: select * from ...
- SecureCRT光标颜色
SecureCRT连linux光标一直没有,尤其是在vim编辑文档的时候特别麻烦,今天找出解决办法: 选项->会话选项->仿真:将ANSI颜色选中: 选项->会话选项->外观: ...
- 记录一次centos6.4版本的VSFTP本地用户登陆的配置
其实vsftp是一个非常常用而且简单的服务,但是假如服务不是你配置的前者没有留下参考档案,的确是件头疼的事儿,特此记录下. 首先是vsftp的安装当然安装有源码的编译和yum等 这里我选择rpm包的y ...
- ECMAScript6-下一代Javascript标准
介绍 ECMAScript6是下一代Javascript标准,这个标准将在2015年6月得到批准.ES6是Javascript的一个重大的更新,并且是自2009年发布ES5以来的第一次更新. 它将会在 ...
- sql把表格拼成字符串,多半使用于GROUP BY
--假定要聚合的字段是id ,要统计的字段是tname --select a.tname from @T1 a for xml path('row') select id,REPLACE(replac ...
- google推出的SwipeRefreshLayout下拉刷新用法
使用如下: 1.先下载android-support-v4.jar最新版本,之前的版本是没有SwipeRefreshLayout下拉刷新控件的,如果已经更新,此步骤可省略. 2.在xml文件中引用an ...
- [Effective JavaScript 笔记] 第6条:了解分号插入的局限
分号可以省略 js可以在语句结束不强制加分号.(建议还是添加,不添加分号往往会出现不易发现的BUG) function Point(x,y){ this.x=x||0; this.y=y||0; } ...
- [Effective JavaScript 笔记]第33条:使构造函数与new操作符无关
当使用函数作为一个构造函数时,程序依赖于调用者是否记得使用new操作符来调用该构造函数.注意:该函数假设接收者是一个全新的对象. 一个例子 function User(name,pwd){ this. ...
- HTTP HSTS协议和 nginx
导读 Netcraft 公司最近公布了他们检测SSL/TLS网站的研究,并指出只有仅仅5%的用户正确执行了HTTP严格传输安全HSTS.本文介绍nginx如何配置HSTS. 什么是HSTS HTTPS ...