1.结构(struct)

struct name{

  int num;

  name *next;

1)所占内存空间即结构中所有成员的变量大小之和

2)定义指向结构变量的指针比如 name *a; name b; a = &b;

访问其成员变量a->num或(*a).num

2.全局变量/局部变量:定义在函数外/内的变量

静态变量:特点是其存放地址在程序运行期间不发生变化,且只初始化一次。全局变量都是静态变量,局部变量如果定义前面加了"static",也成为静态变量。

非静态变量:在每次函数调用时可能不同,但在函数的执行期间不发生变化。非静态变量一定是局部变量。

注:静态局部变量的应用很多,比如说strtok,它的应用方法是

char *p = strtok(str,',');

while(p != NULL){

  cout<<p<<endl;

  p = strtok(NULL,',');

}

这里会奇怪为什么第一次的输入是str,后续的输入都是NULL。其实这里库函数strtok里就使用到了静态局部变量。

其思路是,当输入不为NULL时,默认为第一次进行分割,并定义静态局部变量static char *start,通过++start对字符进行遍历,在完成一次分割后,将start++,从而实现记录当前分割的位置,在后续分割继续使用start的值。

3.引用

1)定义:比如 int n = 4;int &r = n;r的类型是int &。r引用变量n,便等价于这个变量,修改其中一个另一个也会随之改变。

注:定义引用时需将其初始化成引用成某个变量,且初始化后,其不会再引用别的变量。比如,接着上面的来,int m = 5; r = m;其结果为n和r的值同时被修改为5。

2)应用

下面两个代码是等效的,在第二个代码中,利用了引用,即将a/b定义为n1/n2的引用,从而使代码看起来更简洁

3)引用作为函数的返回值

4)常引用:比如 const int & r = n;

不能通过常引用修改其引用的内容,即不能对r赋值,但可以改变n的值

常量指针,和常引用类似。

4.动态内存分配

1)new,比如 new T;new T[];其返回值均为T*

int *p;

p = new int;//这里等价于定义了int*,动态分配出大小为sizeof(int)字节的内存空间,并将起始地址赋值为p

delete p;

int N = 5;

p = new int[N];//动态分配出大小为N*sizeof(int)字节的内存空间,并将起始地址赋值为p

delete []p;

5.内联函数|函数重载

内联函数:在函数定义前面加入“inline”即可,用于减少函数调用的开销。编译器处理对内联函数的调用语句时,是将整个函数的代码插入到调用语句处,而不会产生调用函数的语句。

函数重载:名字相同,但参数个数/类型不同。

c++学习day4的更多相关文章

  1. python全栈学习--day4

    列表 说明:列表是python中的基础数据类型之一,它是以[]括起来,每个元素以逗号隔开,而且他里面可以存放各种数据类型比如:   1 li = ['alex',123,Ture,(1,2,3,'wu ...

  2. python学习day4软件目录结构规范

    为什么要设计好目录结构? 参考:http://www.cnblogs.com/alex3714/articles/5765046.html "设计项目目录结构",就和"代 ...

  3. 自动化测试学习day4

    主要学习内容:修改文件.集合.函数.模块 修改文件两种方法 修改文件方法一(缺点:代码繁琐,一次性将文件读出,文件过大可能会卡住) with open('geci', 'a+', encoding=' ...

  4. Python学习-day4

    学习装饰器,首先听haifeng老师讲解了一下准备知识. 1.函数即变量 2.高阶函数+嵌套函数==>装饰器 装饰器的作用是在,1)不改变源代码,2)不改变原函数的调用方式的前提下为函数增加新的 ...

  5. Linux学习Day4:管道符、重定向与环境变量

    仅仅是学习Linux系统的命令还不够,只有把多个命令按照自己想要的方式进行组合使用,才能提高工作效率.今天的内容主要是关于如何把命令组合在一起使用,使得输入的命令更准确.更高效,也为接下来的Shell ...

  6. Java学习day4

    今天学习了String以及StringBuider 其中较为重点的除了用法以外,还有,String对象以""方式给出的字符串,只要字符序列相同(即顺序和大小写)无论在代码中重复几次 ...

  7. Moqui学习Day4

    添加一个新建表单 添加一个按钮来弹出新建表单,并创建一个转换来处理输入数据操作. 在FindTutorial.xml文件中添加一个转换. <!--新增 列表 --> <transit ...

  8. python学习day4

    目录 一.迭代器 二.yield生成器 三.装饰器 四.递归 五.基础算法 迭代器 #1.在不使用for循环的情况下 li = [11 ,22, 33, 44] #count = len(li) #s ...

  9. 学习 day4 html 盒子模型

    盒子模型 1.框模型 框:页面上所有元素都可以称为“框” 框模型:(BOX Model),又称盒子模型 定义框处理元素内容.内边距padding.外边距margin.边框的样式border 外边距ma ...

  10. Python学习day4 数据类型Ⅱ(列表,元祖)

    day4 知识补充&数据类型:列表,元祖 1.知识补充 1.编译型/解释型 编译型:在代码编写完成之后编译器将其变成另外一个文件教给你算计执行. 代表语言:Java,c,c++ ,c#, Go ...

随机推荐

  1. java io系列26之 RandomAccessFile

    本文主要介绍 RandomAccessFile. 转载请注明出处:http://www.cnblogs.com/skywang12345/p/io_26.html 更多内容请参考:java io系列0 ...

  2. Part-Ten

    1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12.

  3. 观察者模式--java

    写在前面 钩子函数.注册函数.回调函数,他们的概念其实是一样的. 观察者模式,又可以称之为发布-订阅模式,观察者,顾名思义,就是一个监听者,类似监听器的存在,一旦被观察/监听的目标发生的情况,就会被监 ...

  4. CentOS7 安装 Tomcat8

    安装 Java8准备更新软件yum update 如果提示没有 wget 命令,那么必须先安装 wget 如下:yum install wget 安装Tomcat8这里采用离线解压tar.gz的方式安 ...

  5. MDB数据类型注意事项

    在ArcGIS中,对MDB数据类型的支持较少,如下图: 当时当你打开Access软件的时候,你会发现文本类型,其实有很多种: 假如涉及到的字段类型是文本,而且又比较长,最好设置为“备注”

  6. 错误 3 未找到类型“sdk:Label”。请确保不缺少程序集引用并且已生成所有引用的程序集。

    错误: 错误 3 未找到类型“sdk:Label”.请确保不缺少程序集引用并且已生成所有引用的程序集. 错误 1 命名空间“http://schemas.microsoft.com/winfx/200 ...

  7. mkdocs 生成帮助文档

    简介 MkDocs 可以同时编译多个markdown文件,形成书籍一样的文件.有多种主题供你选择,很适合项目使用. MkDocs 是快速,简单和华丽的静态网站生成器,可以构建项目文档.文档源文件在 M ...

  8. 使用js修改url地址参数

    该方法可以修改url的参数. 例如将 www.baidu.com 修改为 www.baidu.com?name=123 操作为: window.location.href = changeURLArg ...

  9. position:fixed 失效

    如果position:fixed 失效,那应该是你设置position的元素的父元素中有设置了transform属性哦 . 把 transform删除或设置为none就可以解决啦. 但是如果trans ...

  10. 【python小练】0000

    第 0000 题:将你的 QQ 头像(或者微博头像)右上角加上红色的数字,类似于微信未读信息数量那种提示效果. 类似于图中效果 from PIL import Image, ImageDraw, Im ...