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. flask SQLALchemy外键及约束

    from flask import Flask,session from flask_sqlalchemy import SQLAlchemy import config app = Flask(__ ...

  2. oracle数据库的简单操作

    本操作是在oracle的11g版本中的操作 一.数据库登录操作: 如果是在服务器上登录oracle,需要先切换到oracle用户再进行登录 #切换到oracle用户 su - oracle #登录or ...

  3. Junit4学习与使用【转】

    参考: http://blog.csdn.net/qqhjqs/article/details/42219037

  4. ArcMap登录和ArcGIS online都是灰色,无法连接网络的解决方法

    此问题可能由多种原因造成,表现为系统托盘中的 ArcGIS Online 地球图标断开连接(显示红色×). 解决方法: 方法一: 在系统托盘中的 ArcGIS Online 地球图标右键单击此图标 & ...

  5. 回顾一下C++ 编写DLL

    项目模版使用Win32工程创建的dll项目 一.原始代码 使用depends查看导出函数 二.不同编译方式区别 C方式编译(extern "C"): __stdcall调用约定:输 ...

  6. 【D3D】Directx12运行报错&win10无法添加【图形工具】

    “我欢欣雀跃地打开<3D programming with Directx12>,准备接受D3D的洗礼,然后就卡在了 chapter 0 .”——Liez 100%纯小白的chapter ...

  7. mysql信息函数

    mysql> SELECT CONNECTION_ID();  #当前连接的ID+-----------------+| CONNECTION_ID() |+-----------------+ ...

  8. 初入爬虫(java)

    public class CrawlerUtil { public static void main(String [] args) throws IOException { // 创建默认的http ...

  9. django模板语法

    Django 模板语法 Django 模板语法 一.模板 只要是在html里面有模板语法就不是html文件了,这样的文件就叫做模板. 二.模板语法 模板语法变量:{{ }}在Django模板中遍历复杂 ...

  10. linux下socket的连接队列的 backlog的分析

    建立socket连接的过程 1:client发syn请求给server 2:server收到后把请求放在syn queue中,这个半连接队列的最大值是系统参数tcp_max_syn_backlog定义 ...