图解: 一级指针 和 二级指针, 数组 和 指针, 指针数组, 数组指针, 数组指针数组

以下是我学习一级指针和二级指针,数组和指针,指针数组,数组指针,数组指针数组的总结,画图更容易理解:
①一级指针:

是指针,该指针指向一块内存,该指针变量存放的就是这块内存的地址,这样说不直观,用图解释会简单明了:
图解一级指针:
图解: 一级指针 和 二级指针, 数组 和 指针, 指针数组, 数组指针, 数组指针数组
图解: 一级指针 和 二级指针, 数组 和 指针, 指针数组, 数组指针, 数组指针数组
图解: 一级指针 和 二级指针, 数组 和 指针, 指针数组, 数组指针, 数组指针数组
②二级指针:
是指针,该指针指向一个一级指针,该二级指针变量存放的就是一级指针的地址,这样说不直观,用图解释会简单明了:
图解二级指针:
图解: 一级指针 和 二级指针, 数组 和 指针, 指针数组, 数组指针, 数组指针数组
图解: 一级指针 和 二级指针, 数组 和 指针, 指针数组, 数组指针, 数组指针数组
图解: 一级指针 和 二级指针, 数组 和 指针, 指针数组, 数组指针, 数组指针数组
③指针和数组
指针具有指向性,指针变量内存放的是其所指向内存的地址
数组就是数组,指针就是指针,它们是完全不同的两码事!
他们之间没有任何关系,只是经常穿着相似的衣服来迷惑你罢了。(C语言深度解剖)
数组名在不同情况下含义不同的总结:
图解: 一级指针 和 二级指针, 数组 和 指针, 指针数组, 数组指针, 数组指针数组
sizeof 是关键字,而不是函数。函数求值是在运行的时候,而关键字 sizeof 求值是在编译的时候。
<1>指针数组
是数组,该数组的每一个元素是一个指针
int * arr[5]
图解指针数组:
图解: 一级指针 和 二级指针, 数组 和 指针, 指针数组, 数组指针, 数组指针数组
<2>数组指针
是指针,该指针指向一个数组
int (*arr)[5] //arr 是一个数组指针,这个指针的类型是 int(*)[5]
图解数组指针:
图解: 一级指针 和 二级指针, 数组 和 指针, 指针数组, 数组指针, 数组指针数组
数组名 和 &数组名
arr 和 &arr
arr是数组名,数组名表示数组首元素的地址 是一个 int * 类型的变量
&arr是数组指针
<3>数组指针数组
该数组所有元素都是(数组指针)或(指向数组的指针)
int (*arr[10])[5]
图解数组指针数组:
图解: 一级指针 和 二级指针, 数组 和 指针, 指针数组, 数组指针, 数组指针数组
等价于:
typedef int (*t)[5];
t arr2[10];