C++慕课学习第三单元
1. 引用、空指针、及内存动态分配
Reference
定义 :A reference is an alias for another variable. (引用就是另一个变量的别名)
声明引用变量的方法
int x;
int& rx = x;
或者
int x, &rx = x;
性质 :
- 通过引用所做的读写操作实际上是作用于原变量上。
- 引用必须在声明的时候初始化。
- 引用一旦初始化,引用名字就不能再指定给其他变量。
例子:
void swap(int& x,int& y)
{
int t;
t = x; x = y; y = t;
}
int main()
{
auto a{5},b{10};
cout << "Before: a = " << a <<" b = " << b << endl;
swap(a,b);
cout<< "Now: a = " << a <<" b = " << b << endl;
return 0;
}
输出结果:输出结果:
Before: a=5 b=10
After: a=10 b=5
补充
int a { 0 }, b { 1 };
int& r { a };
r = 42;
r = b;
int& r2 = a;
int& r3 = r;
const char* s = "Hello";
const char*& rs = s;
动态内存管理:分配/释放
- C++中通过运算符new申请动态内存
new <类型名> (初值) ;
new <类型名>[常量表达式] ;
如果申请成功,返回指定类型内存的地址;
如果申请失败,抛出异常,或者返回空指针(nullptr)。(C++11)
- 动态内存使用完毕后,要用delete运算符来释放。
delete <指针名>;
delete [] <指针名>;
2.数据类型与转换,[C++]列表初始化
-
布尔数据类型(Boolean data type) C++语言在其标准化过程中引入了**bool**、**true**和**false**关键字,增加了原生数据类型来支持布尔数据。
布尔类型的大小(所占的存储空间)依赖于具体的编译器实现。也可以用 sizeof运算符得到其占用的空间
-
布尔类型的用途 布尔数据类型主要与条件语句相关。条件语句用来更改程序控制流。 -
C++中的布尔类型 C++ keyword: bool, true, false
例如:
bool isMyBook;
bool isRunning = {false}; //C++11 列表初始化方式
bool isBoy( );
bool hasLicense();
bool canWork();
bool shouldSort();
-
布尔类型与整型的转换(Conversion between bool and int) 转换规则:
0 <--> false // 整数0和布尔false互相转化
true <--> 1 // 布尔true转化为整数1
non-zero <-->true // 任意非0整数转化为布尔true
-
关系运算得到布尔值 关系运算(Relational Operation)包括:==, !=, <=, >=, <, >
例如:
int a=0, b={1}; //C++11
3 == a;
b < a;
3.2 >= b;
if (3 == a) {
// blah blah
}
-
逻辑运算得到布尔值 逻辑运算(Logical Operation)包括:&&, ||, !
int a={0}, b{1}; //C++11
a && b;
b || 18;
!a;
while (!a) {
// blah blah
}
-
代码示例 #include <iostream>
int main() {
bool isAlpha;
isAlpha = false;
if (!isAlpha) {
std::cout << "isAlpha=" << isAlpha << std::endl;
std::cout << std::boolalpha <<
"isAlpha=" << isAlpha << std::endl;
}
return 0;
}
运行结果:
isAlpha=0
isAlpha=false
注意:
-
编码规范 26. The prefix is should be used for boolean variables and methods.
26. 布尔变量/函数的命名应使用前缀“is”
例如:isSet, isVisible, isFinished, isFound, isOpen
39. The incompleteness of split lines must be made obvious.
39. 断行必须很明显。
在逗号或运算符后换行,新行要对齐
-
列表初始化(List Initialization)
|