第7章 C/C++指针、数组和字符串
7.1 指针
1、指针就是地址,即存储该指针指向的变量的地址。
2、void* 类型的指针能够被任何类型的指针赋值,因此它不能参与算术运算,只能进行赋值、比较和sizeof()操作。
7.2 数组
1、数组名实际上就是数组的首地址。
2、delete 和 delete[] 的语义。
3、现代C++程序中,应该尽量避免使用数组。而使用vector<T>代替。
7.3 字符数组、字符指针和字符串
1、概念
字符数组:元素类型为char的数组,里面可能有也可能没有字符串结束标志符'\0'。
字符串:也是字符数组,而且肯定是以字符串结束标志符'\0'结束的。
字符指针:即char*, 指向字符串的指针。注意:用来操作字符串的库函数认为字符指针是指向含有字符串结束标志符'\0'的字符串。
2、现代C++程序中,应该尽量避免使用字符数组和字符指针。而用string代替。
7.4 函数指针
1、函数指针即函数的地址。在C/C++中,函数名即表示函数的地址,因此可以将函数名直接赋值给具有相同类型的函数指针。
2、一般函数指针
3、类成员函数指针
7.5 引用和指针的比较
记得毕业找工作那会,在网上看到的面试题中,经常有这样的问题,那时背答案啊,呵呵。
引用和指针其实是两个不同的概念。我现在已经不能流利的说出他们的区别了,但是似乎在实际的使用过程中,我能够区别二者。
有一点容易被误解:引用的创建和销毁不会调用类的构造函数和析构函数。引用只不过是对象(变量)的别名而已,不是实实在在的对象。
引用的主要用途是修饰函数的形参和返回值。
7.1 指针
1、指针就是地址,即存储该指针指向的变量的地址。
2、void* 类型的指针能够被任何类型的指针赋值,因此它不能参与算术运算,只能进行赋值、比较和sizeof()操作。
7.2 数组
1、数组名实际上就是数组的首地址。
2、delete 和 delete[] 的语义。
3、现代C++程序中,应该尽量避免使用数组。而使用vector<T>代替。
7.3 字符数组、字符指针和字符串
1、概念
字符数组:元素类型为char的数组,里面可能有也可能没有字符串结束标志符'\0'。
字符串:也是字符数组,而且肯定是以字符串结束标志符'\0'结束的。
字符指针:即char*, 指向字符串的指针。注意:用来操作字符串的库函数认为字符指针是指向含有字符串结束标志符'\0'的字符串。
2、现代C++程序中,应该尽量避免使用字符数组和字符指针。而用string代替。
7.4 函数指针
1、函数指针即函数的地址。在C/C++中,函数名即表示函数的地址,因此可以将函数名直接赋值给具有相同类型的函数指针。
2、一般函数指针
3、类成员函数指针
7.5 引用和指针的比较
记得毕业找工作那会,在网上看到的面试题中,经常有这样的问题,那时背答案啊,呵呵。
引用和指针其实是两个不同的概念。我现在已经不能流利的说出他们的区别了,但是似乎在实际的使用过程中,我能够区别二者。
有一点容易被误解:引用的创建和销毁不会调用类的构造函数和析构函数。引用只不过是对象(变量)的别名而已,不是实实在在的对象。
引用的主要用途是修饰函数的形参和返回值。