c++学习day4
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的更多相关文章
- python全栈学习--day4
列表 说明:列表是python中的基础数据类型之一,它是以[]括起来,每个元素以逗号隔开,而且他里面可以存放各种数据类型比如: 1 li = ['alex',123,Ture,(1,2,3,'wu ...
- python学习day4软件目录结构规范
为什么要设计好目录结构? 参考:http://www.cnblogs.com/alex3714/articles/5765046.html "设计项目目录结构",就和"代 ...
- 自动化测试学习day4
主要学习内容:修改文件.集合.函数.模块 修改文件两种方法 修改文件方法一(缺点:代码繁琐,一次性将文件读出,文件过大可能会卡住) with open('geci', 'a+', encoding=' ...
- Python学习-day4
学习装饰器,首先听haifeng老师讲解了一下准备知识. 1.函数即变量 2.高阶函数+嵌套函数==>装饰器 装饰器的作用是在,1)不改变源代码,2)不改变原函数的调用方式的前提下为函数增加新的 ...
- Linux学习Day4:管道符、重定向与环境变量
仅仅是学习Linux系统的命令还不够,只有把多个命令按照自己想要的方式进行组合使用,才能提高工作效率.今天的内容主要是关于如何把命令组合在一起使用,使得输入的命令更准确.更高效,也为接下来的Shell ...
- Java学习day4
今天学习了String以及StringBuider 其中较为重点的除了用法以外,还有,String对象以""方式给出的字符串,只要字符序列相同(即顺序和大小写)无论在代码中重复几次 ...
- Moqui学习Day4
添加一个新建表单 添加一个按钮来弹出新建表单,并创建一个转换来处理输入数据操作. 在FindTutorial.xml文件中添加一个转换. <!--新增 列表 --> <transit ...
- python学习day4
目录 一.迭代器 二.yield生成器 三.装饰器 四.递归 五.基础算法 迭代器 #1.在不使用for循环的情况下 li = [11 ,22, 33, 44] #count = len(li) #s ...
- 学习 day4 html 盒子模型
盒子模型 1.框模型 框:页面上所有元素都可以称为“框” 框模型:(BOX Model),又称盒子模型 定义框处理元素内容.内边距padding.外边距margin.边框的样式border 外边距ma ...
- Python学习day4 数据类型Ⅱ(列表,元祖)
day4 知识补充&数据类型:列表,元祖 1.知识补充 1.编译型/解释型 编译型:在代码编写完成之后编译器将其变成另外一个文件教给你算计执行. 代表语言:Java,c,c++ ,c#, Go ...
随机推荐
- Python中表达式与语句
简述 Python中我暂时并未发现谁对着两个名词的明确定义:我对这两个名词的理解就是,表达式就是你想要执行的对象,语句就是你的具体执行操作. 这里应用慕课网老师的一段话,摘自网上"表达式(E ...
- 如何在Ubuntu上开启SSH服务
更新源列表 打开"终端窗口",输入"sudo apt-get update"-->回车-->"输入当前登录用户的管理员密码"-- ...
- jmeter(高并发测试)
1.首先jmeter需要JDK8以上得运行环境 2.下载jmeter,官方网址:http://jmeter.apache.org/download_jmeter.cgi 3.安装jmeter.jmet ...
- electron-vue项目搭建
参考:https://simulatedgreg.gitbooks.io/electron-vue/content/cn/getting_started.html 1. cnpm install -g ...
- 三十二、Linux 进程与信号——不可靠信号
32.1 不可靠信号问题 发生信号时关联动作被重置为默认设置 信号可能丢失 程序片段 在进入 sig_int 与再次调用 signal 之间发生的 SIGINT 信号将不会捕获 导致进程终止 以前版本 ...
- JS/javaScript 获取div内容
jquery: 例如<div id="abc"><a>内容</a></div>$("#abc").html(); ...
- [C++]Linux之读取计算机网络数据[/proc/net/dev]
#include<stdlib.h> #include<stdio.h> #define BUFFER_SIZE 256 int main(){ FILE *stream; c ...
- Vue Router学习笔记
前端的路由:一个地址对应一个组件 Vue Router中文文档 一.路由基本使用 第1步:导入Vue Router: <script src="https://unpkg.com/vu ...
- aabb碰撞检测
在做矩形重叠判断时 要判断A矩形的最大X>B矩形的最小X,A最大Y<小于B最小Y and 要判断B矩形的最大X>A矩形的最小X,B最大Y<小于A最小Y 一套规则,用2遍,很神奇 ...
- luogu P4148 简单题
传送门 这题真简单,直接把\(CDQ\)给ban掉了 其实数据范围比较小可以直接二维树状数组,我们看数据范围,发现点的个数比N还小,可以考虑用一些奇怪的数据结构 说的就是你,\(KD tree\) \ ...