写给自己的
道阻且长,行则将至。
1 引用和指针
引用
引用是为变量起的别名,和原变量共享一块内存,地址相同。
- 引用在声明时必须初始化,也只能在声明的时候初始化;
- 引用一旦声明,就不能再变更为其他变量的别名。
int a = 9;
int &a1 = a;
// a1是a的别名
//指针变量的引用
int *pa = &a;
int* &other_pa = pa;
//other_pa是指针变量pa的别名交换两个字符串:参数引用
定义两个字符串 ap 、bp ,要求用swap 函数交换两个字符串的内容:
char * ap = "hello";
char * bp = "world";
swap(ap,bp);- 指针交换
- 指针引用
void swap(int *&a,int *&b){
int * tmp;
tmp = a;
a = b;
b = tmp;
}- 二维指针,也称指向指针的指针
65413指针算数运算和数组
指针运算的步长:取决于指针所指向的类型大小(字节数),声明一个数组,占用5*4个字节,
int a[5];a的类型:指向int的指针int *,指向a[0] ;a的值:a[0]的地址 ;a+1:指向int的指针int *,指向a[1] ;
与下面的内容加以区分:
&a的类型:int (*)[5],指向包含5个int的数组的指针 ;&a的值:数组a的地址,数值上等于a[0]的地址 ;&a+1:类型为int (*)[5],在&a的基础上偏移5个int的大小。