指针和引用、值传递和引用传递
1、指针和引用
指针是一个变量,它存储的是内存地址;引用和原来的变量是同一个,对引用修改会改变原变量,而修改指针只是修改了指向的内存
可以有const指针、但是没有const引用;指针可以多级int **p;引用只有1级 int &&p不合法
指针可空,引用必须初始化;指针可以修改,可以指向别的变量;引用不能修改,只能是那个变量的引用
2、值传递和引用传递
值传递,会创建变量的一个临时副本,对它修改不会改变原变量
引用传递,因为引用是原变量的一个别名,对引用修改会改变原值
指针作为函数参数时,本质也是值传递,改变指针没效果,改变*p会修改它指向的变量
3、指针数组和指向数组的指针、指针函数和函数指针
int *p[4];存储指针的数组 int (*p)[4];指向数组首地址的指针
int * f();返回值为指针 int (*p)指向函数地址的指针
4、const修饰符
const int *p表示 *p不可修改 int * const p 表示p不可修改
const在*左边,修饰*p, 在右边修饰p