C、C++基础学习笔记

来源:互联网 发布:加弹机网络喷嘴 编辑:程序博客网 时间:2024/04/26 03:01
1.计算机内存分为一个个的存储单元,即一个字节(8bit二进制),整数要存储符号位,实数要存储符号位、小数点1       32位字长计算机
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.运算符重载:

成员函数:=、[]、++

友员函数:<<、>>、+、-

0 0
原创粉丝点击