指针,引用,数组
指针与引用的定义与区别
1. 指针:指针是一个变量,存储的是一个地址,指向内存的一个存储单元;
引用跟原来的变量实质上是同一个东西,只不过是原变量的一个别名而已;
2. NULL,初始化,能否改变
3. sizeof() 大小
4.函数参数传递,引用不会拷贝任何副本,指针还是拷贝指针副本
//////////////////////////////////////////////////////////////////////
指针与数组关系
int a[10]; int (*p)[10]; p = &a;
&a 表示 一个指向10个int型数组 的 指针
(&a)[0] 表示 10个int型数组, 其实就是a,(&a)[1],起始地址是 a[10] 所在的地址
&a[0]--->&(a[0]) 表示 一个 int型指针 ///[] 优先级 高于 &
int * k ; k=a; 这时候 a 被 编译器转化为 指向第一个元素的指针
*a ; * 操作符作用于指针,因此 a 被 编译器转化为 指向第一个元素的指针
*(a+1); +操作符不能用于数组,因此 a 被 编译器转化为 指向第一个元素的指针
a[0] === *(a+0) ; 数组下标运算本质会转化为指针运算,因此 a 被 编译器转化为 指向第一个元素的指针
void f(char str[]) /* 会被调整为: void f(char *str) */