C、C++基础学习笔记
来源:互联网 发布:加弹机网络喷嘴 编辑:程序博客网 时间:2024/04/26 03:01
2.C、C++运行:编辑——>预处理——>编译——>链接——>装入
3.A-Z 65-90 a-z 97-122 ASCII
4.一般不比较浮点数数值的相等和不相等性
5.数组的首地址:存储空间的第一个字节的地址 存储单元的(地址)
指针:一个变量或常量的地址(十六进制的整数)——>指针变量:存放地址的变量(4字节)——>初始化指针变量
二级指针:存储一级指针变量的地址如二维数组 、指向数组的指针变量double (*p_array)[5]
指向二维数组的指针变量int (*pf[2])[3] 分别有两个pf[0]、pf[1]是指向长度为3的数组的指针变量
6.动态分配内存:初始化、判断是否因为内存紧张而申请失败if(p1!=NULL) cout<<*p1;
7.字符数组初始化可以这样写:
char a[8],*p;
p1 = a;
cin>>p1;//整体输入
cout<<p1;//整体输出
strlen、strcmp、strcat、strcpy
8.结构数组:struct person per[2];
enum weekday{sun,mon,tue,wed,thu,fri,sat}; (里面的是常量) weekday day1; day1 = weekday(1);强制转换
9. 常引用形参,这样就不会改变实参,像值传递
10.当函数返回引用时,不会产生匿名存储空间,只是返回实际返回值的引用
返回局部变量的问题:
int &f()
{
int t;
return t;
}返回的是f()的局部变量t的引用,这种返回是没有意义的
11.内联函数:执行时是替换操作
函数原型作用域、块作用域、文件作用域
12.寄存器变量:存放在CPU的寄存器 register
条件编译:选择某一部分编译
13.printf("%-015.5d",a);
scanf("%*5d",&a);
fflush(stdin); :防止多余是数据影响后面的输入
14.问题规模:1 - n,空间1 - S(n) 时间1 - T(n) 空间单位:变量和构造变量 时间单位:程序步
程序步: 表达式与函数、表达式与变量、函数的形参、函数的局部变量
T(n)有个上限,O(f(n)),加法(并列),乘法(嵌套) S(n) = O(f(n))辅助的空间:如排序时移动数据所需的临时工作单元、递归工作栈
C++
1.类、对象、抽象、封装、继承、多态
2. 类的所有对象的函数成员在同一共用区
拷贝构造函数:CPoint(CPoint& p);
深浅复制:变量成员是否共用同一内存区 深复制:不共用 CPoint(const CPoint& p);
3.静态成员访问:
ClassB::f();
cb1.f();
4.构造函数必须使用初始化列表来初始化常变量成员
常对象只能调用公有的常函数成员
5.友员函数(普通函数或另一个类的函数):通过对象访问
6.CStudent stu1("张宏","20082200",c); 复合类
调用CCourse拷贝构造函数
调用CCourse构造函数2
调用CStudent构造函数2
析构则对称
7.string.find string.substr cin>>str;遇到空白字符结束 getline(cin,s1,'*');可输入空白字符
8.public继承:
基类的public protected保持不变
派生类的成员函数可访问基类的public protected
派生类的对象可访问基类的public
protected继承:
基类的public protected变为protected
派生类的成员函数可访问基类的public protected
派生类的对象可访问基类的null
private继承(默认)
基类的public protected变为private 通过A::x1 A::g 来恢复
派生类的成员函数可访问基类的public protected
派生类的对象可访问基类的null
9.派生类构造函数定义时要显示调用基类的构造函数
派生类重命名或重定义基类的成员函数时屏蔽 通过CPoint::Move(2,3)恢复
10.复合类与继承
构造函数:基类的顺序、内嵌对象的声明顺序
11.重复继承有二义性及重复存储问题,应该用虚基类class A1:virtual public D{}
最远派生类
12.多态:
静态:函数重载
动态:虚函数和动态指针(基类指针)
抽象类和纯虚函数和动态指针(基类指针)
13.函数模版只会为每一个类型提供一个模版函数 实例化
类模版:数据成员、函数参数、函数的返回值 类模版可以继承
14.顺序容器:vector、list、deque
关联容器:stack、queue、set、map
vector
*(v.end() - 1) 最后一个元素
*(v.rend() - 1) 第一个元素
Input Iterator只读 Output Iterator 只写 Forward Iterator向前读写 Bidirectional iterator向前向后读写 Random Access Iterator随机读写
iterator(向前读写) reverse_iterator (向后读写) const_iterator(向前读) const_reverse_iterator(向后读)
15.命名空间:
#include <iostream> //不加 .h
using namespace std;
16.运行异常:数组下标溢出、内存不足、除数为零
f1()收到f2()发来的异常,没找到就传递给f1()的调用者
发现一条异常时则忽略后面的异常
创建对象时构造函数的异常
17.为解决输入输出设备与系统速度不匹配的问题,要设立一个内存的缓冲区
流:字节组成的数据
cout.width(10); 需要在每次要设定宽度时调用
操纵算子: #include<iomanip> 带参数的操纵算子
18.文本文件:ASCII
if(!infile.eof()) infile.getline(c,sizeof(c)); infile.get(ch); outfile.put(ch[i]);
二进制文件:内存的实际字节
inBin.read(data[i],str_len); outBin.write(data[i],str_len);
读写指针 :seekg、tellg 读指针 seekp、tellp 写指针
istrstream str(b); 字符流
str>>x1;
str>>x2;
19.运算符重载:
成员函数:=、[]、++
友员函数:<<、>>、+、-
- C/C++基础学习笔记
- C语言基础学习笔记
- C、C++基础学习笔记
- 【C#】C#基础学习笔记
- C基础学习笔记01
- C基础学习笔记02
- C++&C学习笔记(一)(基础)
- 学习笔记之C语言基础篇
- C/C++基础 达内学习笔记
- C语言基础学习笔记综合
- 数据结构学习笔记之C指针基础
- Object-c基础编程学习笔记-Foundation
- Object-c基础编程学习笔记-NSString
- Object-c基础编程学习笔记-集合
- Object-c基础编程学习笔记-分类
- Object-c基础编程学习笔记-协议
- Object-c基础编程学习笔记-NSPredicate
- 学习笔记:C程序基础(1)
- hdu1171 Big Event in HDU 01背包
- (1、2/23)工厂方法模式And抽象工厂模式
- Android 学习的思路-大四未找到工作的骚年
- MyMathLib系列(行列式计算2)
- Spark Streaming初探
- C、C++基础学习笔记
- 高精度模板(大数)
- 虚拟化、大数据、云计算、物联网、移动互联网以及传统互联网之间的关系
- SpringMVC资源路径映射问题
- 盛大游戏被卖说明互联网的一个趋势
- Android4.0以上虚拟按键没有menu看看这篇文章
- 初学JDBC
- C and C++ Standards and Specifications
- JAVA设计模式(三)——抽象工厂模式