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 ...
随机推荐
- flask SQLALchemy外键及约束
from flask import Flask,session from flask_sqlalchemy import SQLAlchemy import config app = Flask(__ ...
- oracle数据库的简单操作
本操作是在oracle的11g版本中的操作 一.数据库登录操作: 如果是在服务器上登录oracle,需要先切换到oracle用户再进行登录 #切换到oracle用户 su - oracle #登录or ...
- Junit4学习与使用【转】
参考: http://blog.csdn.net/qqhjqs/article/details/42219037
- ArcMap登录和ArcGIS online都是灰色,无法连接网络的解决方法
此问题可能由多种原因造成,表现为系统托盘中的 ArcGIS Online 地球图标断开连接(显示红色×). 解决方法: 方法一: 在系统托盘中的 ArcGIS Online 地球图标右键单击此图标 & ...
- 回顾一下C++ 编写DLL
项目模版使用Win32工程创建的dll项目 一.原始代码 使用depends查看导出函数 二.不同编译方式区别 C方式编译(extern "C"): __stdcall调用约定:输 ...
- 【D3D】Directx12运行报错&win10无法添加【图形工具】
“我欢欣雀跃地打开<3D programming with Directx12>,准备接受D3D的洗礼,然后就卡在了 chapter 0 .”——Liez 100%纯小白的chapter ...
- mysql信息函数
mysql> SELECT CONNECTION_ID(); #当前连接的ID+-----------------+| CONNECTION_ID() |+-----------------+ ...
- 初入爬虫(java)
public class CrawlerUtil { public static void main(String [] args) throws IOException { // 创建默认的http ...
- django模板语法
Django 模板语法 Django 模板语法 一.模板 只要是在html里面有模板语法就不是html文件了,这样的文件就叫做模板. 二.模板语法 模板语法变量:{{ }}在Django模板中遍历复杂 ...
- linux下socket的连接队列的 backlog的分析
建立socket连接的过程 1:client发syn请求给server 2:server收到后把请求放在syn queue中,这个半连接队列的最大值是系统参数tcp_max_syn_backlog定义 ...