【C++ primer 笔记】第四章 数组和指针

来源:互联网 发布:中国投资咨询 知乎 编辑:程序博客网 时间:2024/05/29 16:38
1.数组与vector相比,缺点在于:
数组长度固定,而vector可以动态增加;
数组没有size()函数获取总长度;
数组没有push_back()操作直接添加元素;
用vector每行元素比较的时候,相较于数组要方便很多。
综上所述,vector真心好用,可是在课堂上接触很少。

2.指针和下标
int *p = &ia[2]; 
int j = p[1]; //p[1]相当于ia[3],以此类推,p[-2]相当于ia[0]
这种做法除非遇到了特定环境才会用吧,一般不会这么用的。C/C++里面就是有很多这样奇怪的东西,又不少一不小心就会犯错,真是让人头疼。


3.指针允许计算数组首地址最后一个元素的下一个元素之间任何元素的地址,但是不可以对最后一个元素的下一个元素进行解引用(取内容)操作,如图

4.指向const对象的指针(自以为指向const的指针……好可爱)
const double *ptr;//不可以通过ptr改变对象的值,但是可以改变ptr的值
const对象的地址不可以给非const指针,非const对象地址可以赋给const对象的指针
//跟绕口令一样……不过还是比较好理解的

指向const对象的指针,通常用于函数的形参,确保在函数中不会被修改!

5.const指针(必须在定义时初始化)
int errNumb = 0;
int *const curErr = &errNumb;
这个时候,指针就不可以被修改了,也就是说,curErr只能指向errNumb了!此时任何赋值行为都是错误的
即便是 curErr = curErr;但是并不意味着不可以通过该指针修改对象的值,除非是指向const的const指针,这个就是个痴情货,什么都不能改啊……

6.指针和Typedef
typedef string *pstring;
const pstring cstr;//这是const指针这是const指针这是const指针这是const指针!!!
请问 cstr是什么类型的?


7.c风格字符串【以空字符null结尾的字符串,慎用,尽可能用string标准类型】

对应头文件#include<cstring>

Attention:<,>,==符号比较的是两个指针存放的地址,而并非它们所指向的字符串!


原创粉丝点击