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. 深入浅出 JavaWeb:Servlet必会必知

    一.Web服务器 从事web开发的人,会很清楚一个东西叫HTTP服务器,比如JEE开发—Tomcat,Jetty,.NET开发—ISS等.HTTP服务器是使用 HTTP(超文本传输协议) 与客户机浏览 ...

  2. CentOS7 上以 RPM 包方式安装 Oracle 18c 单实例

    安装阿里云 YUM 源 https://opsx.alibaba.com/mirror?lang=zh-CN 一.安装Oracle数据库 1.安装 Oracle 预安装 RPM yum -y loca ...

  3. Windows netstat 查看端口、进程占用 查看进程路径

    1.查看端口.进程占用 运行->进入cmd->netstat -ano 2.查看进程路径 运行->WMIC->process 3.查看进程PID和占用内存情况 运行->进 ...

  4. ubuntu 14.04中安装 ruby on rails 环境

    环境:在win7 上Vmware虚拟机环境中安装的ubuntu 14.04 1. bundle install 时,报json错误可以看出是在安装nokogiri时遇到了问题,此时执行 sudo ap ...

  5. JAVA正确地自定义比较对象---如何重写equals方法和hashCode方法

    在实际应用中经常会比较两个对象是否相等,比如下面的Address类,它有两个属性:String province 和 String city. public class Address { priva ...

  6. 通过WifI开发调试Android设备

    前言:使用的windows系统,为了可以通过wifi可以直接连接android设备调试,尝试使用以下方法一.使用ADB USB to WIFI 一直不成功. 二.使用命令行方式 1.进入android ...

  7. ImageView获取宽高

    在Android里放置一个ImageView im1,宽和高都是200.以下代码都是直接在OnCreate里使用. 1.在Android OnCreate里如果直接使用iv.GetWidth()返回值 ...

  8. IScroll在某些手机浏览器上不能滑动和卡顿解决办法

    1.不能滑动,增加一句 if (scroll != null) scroll.refresh();2.卡顿,增加 <script>window.PointerEvent = undefin ...

  9. 【Vue课堂】Vue.js 父子组件之间通信的十种方式

    这篇文章介绍了Vue.js 父子组件之间通信的十种方式,不管是初学者还是已经在用 Vue 的开发者都会有所收获.无可否认,现在无论大厂还是小厂都已经用上了 Vue.js 框架,简单易上手不说,教程详尽 ...

  10. 常用.net反编译替换正则表达式

    .set_([^\(]*) .$ = ------------------ .get_([^\(]*)\(\) .$ ------------------ .get_Item\(([a-z|-]+)\ ...