C++复习笔记(1)
复(su)习(cheng)一下c++。
1. 函数
函数重载:允许用同一函数名定义多个函数,但这些函数必须参数个数不同或类型不同。
函数模版:
(应该是跟java的泛化类似,内容待扩展)
template <typename T>
T min_test(T a, T b) {
return a<b?a:b;
} int main() {
cout<<min_test(1.2, 1.1)<<endl;
cout<<min_test<int>(2,3)<<endl;
return 0;
}
大概就是这么个意思。T代表一个位置的数据类型。利用函数模版定义的函数,既可以自动识别类型,也可以指定类型。指定类型应该是可以不完全指定,但是必须按顺序。
2. 数组
字符数组:
char str[10]="book";
这样定义的数组,str的前4个位置分别是book,后面的位置都是\0。
cout<<strlen(str)<<" "<< sizeof(str)<<endl;
这行命令将输出:4 10。
strlen()是函数,统计到\0时就结束。sizeof()是运算符,计算数据空间的大小。
3. 指针和引用
总的来说,*和&各有两个意义:
int a=1;
int* b=&a;
int& c=a;
*b=2;
第二行的*代表声明的变量类型为int的指针,&代表取地址。第三行的&代表引用。第四行的*代表解引用。
数组名代表数组第一个元素的地址。
int a[3]={1,2,3};
int* p3=a;
cout<<*p3<<" "<<*(p3+1)<<endl;
指向数组的指针和指针数组:
int (*p1)[4];
int *p2[4];
p1是指向4个元素的数组的指针,p2是一个4个指针的数组。
字符串与指针:
char *s1 = "hello";
cout<<s1<<" "<<*(s1+1)<<endl;
char s2[10]="abc";
cout<<s2<<" "<<*(s2+2)<<endl;
输出结果是:
hello e
abc c
s1和s2基本上可以看成是等价的,形式上来看。
函数指针:
int pa(int x) {
return x+1;
}
int pb(int x) {
return x-1;
}
int main() {
int (*fp) (int x);
fp = pa;
cout<<fp(5)<<endl;
fp = &pb;
cout<<fp(5)<<endl;
return 0;
}
声明就是跟fp那种方法生命。在赋值的时候,注意函数名其实就已经表示了该函数的地址,所以加不加取地址符都一样。
常引用不能通过引用对目标值进行修改。
4. 结构体,共用体,枚举
共用体的不同数据类型共用一段内存空间。
结构体和共用体占用的内存计算(没搞懂,待补充)
5. 预处理
宏定义:
简单宏定义中,替换部分是表达式的时候,要加括号。带参数的表达式也要各种加括号。
复合语句的宏在预处理时会被展开,所以可以用do {} while(0)来把复合语句变成单一语句。
条件编译中,定义的宏如果只作为条件,可以没有内容。
(大概先这样,慢慢补充)
C++复习笔记(1)的更多相关文章
- Java基础复习笔记系列 九 网络编程
Java基础复习笔记系列之 网络编程 学习资料参考: 1.http://www.icoolxue.com/ 2. 1.网络编程的基础概念. TCP/IP协议:Socket编程:IP地址. 中国和美国之 ...
- Java基础复习笔记系列 八 多线程编程
Java基础复习笔记系列之 多线程编程 参考地址: http://blog.csdn.net/xuweilinjijis/article/details/8878649 今天的故事,让我们从上面这个图 ...
- Java基础复习笔记系列 七 IO操作
Java基础复习笔记系列之 IO操作 我们说的出入,都是站在程序的角度来说的.FileInputStream是读入数据.?????? 1.流是什么东西? 这章的理解的关键是:形象思维.一个管道插入了一 ...
- Java基础复习笔记系列 五 常用类
Java基础复习笔记系列之 常用类 1.String类介绍. 首先看类所属的包:java.lang.String类. 再看它的构造方法: 2. String s1 = “hello”: String ...
- Java基础复习笔记系列 四 数组
Java基础复习笔记系列之 数组 1.数组初步介绍? Java中的数组是引用类型,不可以直接分配在栈上.不同于C(在Java中,除了基础数据类型外,所有的类型都是引用类型.) Java中的数组在申明时 ...
- Java基础复习笔记基本排序算法
Java基础复习笔记基本排序算法 1. 排序 排序是一个历来都是很多算法家热衷的领域,到现在还有很多数学家兼计算机专家还在研究.而排序是计算机程序开发中常用的一种操作.为何需要排序呢.我们在所有的系统 ...
- Angular复习笔记7-路由(下)
Angular复习笔记7-路由(下) 这是angular路由的第二篇,也是最后一篇.继续上一章的内容 路由跳转 Web应用中的页面跳转,指的是应用响应某个事件,从一个页面跳转到另一个页面的行为.对于使 ...
- Angular复习笔记7-路由(上)
Angular复习笔记7-路由(上) 关于Angular路由的部分将分为上下两篇来介绍.这是第一篇. 概述 路由所要解决的核心问题是通过建立URL和页面的对应关系,使得不同的页面可以用不同的URL来表 ...
- Angular复习笔记6-依赖注入
Angular复习笔记6-依赖注入 依赖注入(DependencyInjection)是Angular实现重要功能的一种设计模式.一个大型应用的开发通常会涉及很多组件和服务,这些组件和服务之间有着错综 ...
- Angular复习笔记5-指令
Angular复习笔记5-指令 在Angular中,指令是一个重要的概念,它作用在特定的DOM元素上,可以扩展这个元素的功能,为元素增加新的行为.本质上,组件可以被理解为一种带有视图的指令.组件继承自 ...
随机推荐
- 指令重排序 as-if-serial
笔者认为看完一本书或刚要了解完一个知识点 最好自己先运行一些DEMO 自己尝试着去了解下各种意思 这样知识点最终一定是你的.靠死记硬背的讨论或简单的粗暴的看下资料 脑子里肯定还是一团浆糊. p.p ...
- swack的wiki站上线
swack的个人wiki网址:www.swack.cn [服务器破旧,速度较慢,见谅!]
- 【SpringBoot1.x】SpringBoot1.x 配置
SpringBoot1.x 配置 文章源码 配置文件 SpringBoot 使用一个全局的配置文件,配置文件名是固定的. application.properties.application.yml都 ...
- 计算机考研复试 A+B
题目描述 读入两个小于100的正整数A和B,计算A+B. 需要注意的是:A和B的每一位数字由对应的英文单词给出. 输入描述: 测试输入包含若干测试用例,每个测试用例占一行,格式为"A + B ...
- 编译安装PHP - 7.3.16
编译安装PHP - 7.3.16 1 ) 安装依赖包: yum install -y gcc gcc-c++ make zlib zlib-devel pcre pcre-devel libjpeg ...
- Python列表推导式玩法
前言 列表做为python的基础,是必须学习的语法之一.一些基础的之前已经是反复温习和使用了,今天我们来学习它的进阶版-->列表推导式. 列表推导式: 优点:是将所有的值一次性加载到内存中,相比 ...
- SpringBoot 导入插件报错 Cannot resolve plugin org.springframework.boot:spring-boot-maven-plugin:2.4.1
使用 maven 导入插件的时候报错: Cannot resolve plugin org.springframework.boot:spring-boot-maven-plugin:2.4.1 我的 ...
- 【MySQL】centos6中/etc/init.d/下没有mysqld启动文件,怎么办
如果/etc/init.d/下面没有mysqld的话,service mysqld start也是不好使的,同样,chkconfig mysqld on也是不能用 解决办法: 将mysql的mysql ...
- 【Oracle】表空间配额问题
由于需求,需要新建用户,但是新建的用户,会有相关的配额跟着,莫名其妙的问题让人很头疼 下面介绍下如何修改成不限制配额 select * from user_ts_quotas ; alter user ...
- Flutter 自定义列表以及本地图片引用
前言 上篇关于Flutter的文章总结了下标签+导航的项目模式的搭建,具体的有需要的可以去看看Flutter分类的文章,这篇文章我们简单的总结一下关于Flutter本地文件引用以及简单的自定义List ...