C/C++教程

Coursera C++ 程序设计,北京大学

本文主要是介绍Coursera C++ 程序设计,北京大学,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

简单的看了一下课程内容:介绍了类,内联函数,友元函数,运算符重载,多态,虚函数,\(STL\) 等等。
这些内容之前仅有使用上的接触,并没真正理解过。需要用心学一下!
(但是感觉郭炜老师讲的没李戈老师那么有趣)


函数指针

之前学习 \(SML\) 时,一直觉得将函数以参数形式传入另一个函数这个功能很强大:C++ 中原来是靠函数指针实现的
一般的,函数的名字即为指向该函数的函数指针,我们也可以自定义指向某个函数的函数指针,格式为 函数指针名(实参表);
本质上来讲,每个函数在内存中也会占用一段空间,函数指针即指向这个函数所占内存的其实地址。所以,对函数指针进行的自加自减操作是没有意义的

bool cmp(int x, int y) {
  return x > y;
}
bool (*pf)(int, int);     // 声明一个函数指针:注意声明的格式!与 cmp 函数的类型以及参数类型完全一致
pf = cmp;
sort(a + 1, a + n + a, pf);  // 向其他函数:这里以 sort 为例传入自定义的 cmp 函数

命令行参数

在 cmd 中使用 C++ 运行命令行时,可以通过在 main 函数中设置参数来处理命令行参数

int main(int argc, char *argv[]) {
  ...
}

argc: 启动程序时,命令行参数的个数:由于可执行文件名也算作一个命令行参数,所以 argc 至少是 \(1\)
argv[]: 注意这是一个指针数组,每个元素都是 char 类型的指针,指向某个参数字符串。也可以说是 char** 类型。
char (*argv)[] 区别开,后者指的是指向某个 char 一维数组的指针。


位运算

&, |, ~, ^, >>, <<
六个按位运算符,之前都已经很熟悉,所以就不具体做笔记了


引用

我们用格式 类型名 & 引用名 = 某变量名

int n = 3;
int &r = n;  // 定义了引用 r 引用了 n,r 的类型是 int &
r = 4;       // 同时 n 的值也变为 4

某个变量的引用,等价于这个变量,相当于这个变量的一个别名(alias)
定义引用时一定要将其初始化为引用某个变量,并且引用一定要引用某个变量,不能引用常量和表达式

int n = 30;   // 全局变量 n = 30
int &Setvalue() { return n; }  // 该函数返回一个引用,引用变量 n
Setvalue() = 40;

以上的函数定义了一个引用作为函数的返回值:这样做的好处是函数可以写在赋值表达式的左侧

int n = 20;
const int &r = n;  // 定义一个常引用
r = 30;   // wrong!
n = 30;   

在定义引用时,前面加 const 关键词即可定义一个常引用,如以上代码,\(r\) 即是一个对 \(n\) 的常引用
常引用和非常引用的区别:我们无法通过常引用去修改其引用的内容!
关于常引用和非常引用的转换:const T&T& 是两种不同的类型
可以通过 T&T 类型 来初始化 const T& 类型
const Tconst T& 类型则不能用来初始化 T& 类型的引用,除非进行 强制类型转化

这篇关于Coursera C++ 程序设计,北京大学的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!