关于 array 和 &array (数组名与数组地址)
摘要:对于数组a: 在绝大多数情况下,a 等价于 &a[0],即数组名等于数组首元素地址(等同于数组首地址) 只有两种情况例外: 1. 对数组名取地址(&a),此时虽然数值上等于 a,但表示含义不同,a 表示首元素地址,&a 表示整个数组的首地址, 因此 a+1 ≠ &a+1,具体见前篇; 2. 使用 s
阅读全文
posted @
2023-08-04 10:49
wkxnk
阅读(71)
推荐(0) 编辑
#include<> 和 #include"" 的区别
摘要:#include<>:在 编译器默认的头文件目录 中搜索包含的头文件 #include"" :首先在 当前源文件所在目录 中搜索包含的头文件,如果没有,再在 编译器默认的头文件目录 中搜索
阅读全文
posted @
2023-07-29 23:56
wkxnk
阅读(8)
推荐(0) 编辑
C++数组下标可以是负数
摘要:int a[5] = {0, 1, 2, 3, 4} int *p = a+4; cout << p[-2] << endl; // 2 p[-2] 表示从指针当前位置向前寻址两个数据类型长度 注1:只有在 p 是指针时才能这么做,不应当出现 a[-2] 这样数组名加负数下标的用法,因为会超出数组地
阅读全文
posted @
2023-07-22 17:29
wkxnk
阅读(190)
推荐(0) 编辑
vector 容器的 begin, end, front, back 函数的区别
摘要:begin() 返回首位元素的迭代器 end() 返回末尾元素下一个位置的迭代器 front() 返回首位元素的引用 back() 返回末尾元素的引用
阅读全文
posted @
2023-07-06 23:57
wkxnk
阅读(125)
推荐(0) 编辑
【易错点】getchar, printf, gets 的区别
摘要:getchar 为输入单个字符,输入 "et al",得到的是 'e', 't', ' ', 'a', 'l' printf 为输入多个参数,以空格号为分隔,输入 “et al”(%s输入格式),得到的是 "et", "al" gets 为输入字符串,结束标记为换行符 '\n',输入结束以后读取到的
阅读全文
posted @
2023-06-15 00:13
wkxnk
阅读(89)
推荐(0) 编辑
【易错点】数组名,数组名+偏移,数组取地址 与 sizeof 操作符
摘要:int a[3] = {1, 2, 3}; a: 数组名,数组中第一个元素的地址,相当于 &a[0] &a:整个数组的地址,在数值上等于 a a+1:数组中第二个元素的地址,相当于 &a[1] &a+1:整个数组结束以后后面一个位置的地址 即:a = &a, 但 a+1 ≠ &a+1 a[0] a[
阅读全文
posted @
2023-06-12 22:43
wkxnk
阅读(58)
推荐(0) 编辑
数据类型所占的字节数
摘要:32位编译器: char short int long long long float double 指针 1 2 4 4 8 4 8 4 64位编译器: char short int long long long float double 指针 1 2 4 8 8 4 8 8
阅读全文
posted @
2023-06-12 00:01
wkxnk
阅读(26)
推荐(0) 编辑
虚函数与纯虚函数
摘要:虚函数: 函数前有virtual关键字,子类继承后用于动态多态 纯虚函数: 函数前有virtual关键字,且函数列表后必须有 “=0”,纯虚函数没有函数体,只能在子类中重载后实现函数体并调用
阅读全文
posted @
2023-06-10 00:26
wkxnk
阅读(10)
推荐(0) 编辑
重载,覆盖,隐藏与多态
摘要:如果父类与子类中拥有同名的函数: 1. 如果父类函数前没有virtual,且父子同名函数的参数列表不同(参数个数、类型和顺序至少有一个不同), 则构成重载,用父类指针调用该函数名,调用的是子类函数,父类函数被覆盖 / 隐藏 / 不可见 (注:若两个函数参数列表相同,只有返回值类型不同,不构成重载)
阅读全文
posted @
2023-06-10 00:22
wkxnk
阅读(12)
推荐(0) 编辑
父类与子类的构造函数
摘要:1. 子类实例化时一定会调用父类的构造函数,然后再调用自己的构造函数(析构时顺序相反) (因为子类继承了部分父类的成员变量,需要调用父类的构造函数来初始化) 2. 若有自定义的构造函数,则系统调用自定义构造函数;如果没有,则系统会自动生成一个默认的构造函数并调用它 (系统自动调用属于“隐式调用”)
阅读全文
posted @
2023-06-10 00:05
wkxnk
阅读(106)
推荐(0) 编辑
C++类访问权限与继承方式的关系
摘要:类成员访问权限有3种: public, protected, private 三者区别: 权限级别 类内函数 派生类函数 对象 public √ √ √ protected √ √ × private √ × × (注:“√” 表示可访问,“×” 表示不可访问) 派生类继承基类的继承方式也有三种:
阅读全文
posted @
2023-05-31 00:01
wkxnk
阅读(15)
推荐(0) 编辑
class和struct的区别
摘要:对于纯C语言: 没有class,struct仅作为一种包含多种基本类型 (int, char, double) 的组合体,没有类的概念,没有继承、多态等功能 对于C++: C++中的struct是对C的兼容与扩充,功能和class区别不大,除了成员变量还可以包含成员函数,有继承、多态等功能,唯一的区
阅读全文
posted @
2023-05-27 16:51
wkxnk
阅读(29)
推荐(0) 编辑
类的四大特性
摘要:封装、继承、多态、抽象 其中抽象和封装是对类的描述,继承是类的功能,多态是基于继承功能之上的功能
阅读全文
posted @
2023-05-13 17:31
wkxnk
阅读(87)
推荐(0) 编辑
const与指针的四种关系
摘要:定义变量 int a = 1; const int b = 2; 1. 将 普通变量地址 赋给 普通指针: int * p1 = a; // 正确 2. 将 const变量地址 赋给 普通指针: int * p2 = b; // 错误 // p2是普通指针,意味着可以通过p2修改b的值,而b为con
阅读全文
posted @
2023-05-10 13:29
wkxnk
阅读(60)
推荐(0) 编辑
常量指针和指针常量的区别
摘要:定义变量 int a = 1; int b = 2; 常量指针: 顾名思义,指向常量的指针(a pointer to const int,底层const),不能通过该指针修改变量的值(不通过该指针仍然可以修改) const int * p1 = &a; // *p1为const,即指针指向的值为co
阅读全文
posted @
2023-05-10 13:05
wkxnk
阅读(28)
推荐(0) 编辑
关于不同平台、环境下64位int型的输入输出方式(转)
摘要:C语言 64位int 定义方式: Linux: long long Windows:__int64 C语言 64位int 输出方式: Linux: "%lld" Windows:"%I64d" C++ 64位int 定义方式: Linux: long long Windows:__int64 C++
阅读全文
posted @
2020-08-31 18:47
wkxnk
阅读(1058)
推荐(0) 编辑