9.2 指针
补充地址赋值方法:
double* ptr_num = &num
使用中 *ptr 是取ptr这个指针指向的值
举例:
注意!
如果是char 类型指针,会出错:
例如
char* str = "我真帅!" //char*表示字符串
所以这是实际是把&num的地址当做字符串赋给了ptr_num,打印的时候也是将地址按照字符串打印了出来,所以会出错。
在打印时候在前面添加(void *),就可以按照地址方式打出:
9.4 常见指针类型
避免野指针
如果没有初始值,这就是个野指针,如果指向系统关键的内存空间,进行修改可能会崩溃,所以一定要进行初始化:
这时候指针指向0,表示空指针。
void 指针*
因为类型不能确定,所以不能用指针访问或修改地址的值,只能用于比较地址。
9.5 引用
类似于指针,但是比指针更高效,效果如下:
引用不能指向常量,但是常量引用方法可以,如:
const int& refint = 100;
指针和引用对比:
数组与指针
区别:
看起来数组名和指针相同,但是数组名表示的是数组,指针表示地址是四个字节表示的,用sizeof()时就可以看得出来了。
9.6 指针运算
指针的移位:
指针可以继续+或-,指向其他地址进行访问或修改。
所以指针用完了一定要销毁,太危险了。
小结