易错知识点——<引用和指针之间的特性>
1、指针加减操作
理解指针的加减操作,对指针进行加1操作,得到的是下一个元素的地址而不是原有地址值直接加1,所以一个类型为t的指针的移动,是以sizeof(t)为移动
2、指针常量和常量指针的区别
在C++中,常量指针和指针常量是两个相关但不同的概念。
const char* p 常量指针(const pointer)是指向常量的指针,意味着指针本身的值可以改变,但是通过指针所指向的内容必须是常量,不能通过指针修改它指向的值。
char* const p指针常量(pointer to const)是指向非常量的常量指针,即指针本身是常量,不能修改它的值(赋值后不能更改指针指向),但是可以通过指针修改它指向的内容。
3、关于this指针
4、char*和char[]区别
char*是 字符指针变量,可以指向字符地址或字符串首地址。
char* p = "hello world"是错误的,"hello world"是字符串常量,也就是const char*(常量指针),char*前必须加const,即const char* p="hello world",不能修改p指向的常量区内存的内容。
sizeof(p)的大小是平台下一个指针的大小(32位下是4字节),与其中的字符串长度无关。
char []是字符数组,指向连续字符(栈内存)的首地址。
char s[] = "hello world"是可以的,且可修改s[2]='a',但此时s的指向是不能变的,相当于是char* const(也就是指针常量)
sizeof(s)的大小是字符串所占字节数(包括\0一个字节)。