- 指针的基础知识
- 数组和指针
- 二维数组
- 其实指针就是地址
- 内存是线性的
- 32位的计算机地址大小是4个字节 64位的计算机指针大小是8个字节
- 指针的数据类型决定了该指针的寻址能力。也就是☞指针代表的地址处的寻址范围
- 指针运算只能发生在同类型或整型空间否则会报错或警告
- 指针的运算除了数值运算还有数据类型
- 数组名就是该数组的首元素的指针
array[i] = *(array+1) *p++ = *(p++) //先得到*p 在使p+1
往指定地址写数
int *p =(int *)0x123456789;
*p = 1234;
二维数组
- 二维数组名解引用,降维为一维数组名。 *(a+1) —a[1]
- 一维数组名,对其引用,升级为二维数组名。 &a[1] – (a+1)
- &引用和*解引用互为逆向关系。
- 对于数组a[3][4]
- a 是数组首元素的地址,所以 a 的值和&a[0]的值相同,另一方面,a[0]本身是包含 4 个整数的数组,因此,a[0]的值同其首元素的地址&a[0][0]相同。简单的讲,a[0]是一个整数大小对象的地址,而 a 是 4 个整数大小对象的地址。因为整数和 4 个整数组成的数组开始于同一个地址,因此 a 和 a[0]的值是相同的。
- a 所指的对象大小是 4 个 int,而 a[0]所指的对象大小一个 int,因此,a+1和a[0]+1 的结果是不同的。
有新的知识在补进来关于指针和数组



