1.指针指向的是最低字节地址。
2.每一次跑程序,变量的地址都会是随机的,这是一种保护机制。基本上不可以使用地址直接访问变量。
3.以下是一段有意思的代码。
4.在栈上开辟变量,地址由高到低变化,值得注意的是,不是连续的,中间会有一些空白。
5.在开辟空间的角度,不应该把数组认为成一个个独立的元素,应该整体开辟空间,整体释放。
6.对指针加1,本质上加上其所指向类型的大小。
7.对于非1级指针变量加1,跳过4个字节,因为不管什么类型的指针变量,大小都是4个字节。(32位)
8.数组只能整体初始化,不能整体赋值。
9.指针和数组,在寻址的时候是不一样的。这两个东西没有任何关系。
10.
11.数组传参,发生降维,降维成指针。
12.arr和&arr的区别:
13.数组指针和指针数组:
14.数组的元素个数是数组类型的一部分。
15.强制类型转换:本质是改变看待数据的方式,对数据本身不会发生任何变化。
16.地址的强制转换
17.二维数组
18.二维数组数组名的含义
19.二维数组的细节问题。
20.指针相减,代表指针之间所经历的元素的个数。(不是字节数)(注意正负)
21.二级指针的概念。
22.二维数组传参的时候,只有第1个维度可以被省略。
23.函数也有地址
24.函数名和&函数名是一样的,都是函数的地址。(但是不能加(),加了()就是函数调用)
25.void (*p)() = fun
以上是一个函数指针,没有参数,返回值为空。
26.以指针的形式调用函数。
fun() 等价于 (*p)() 等价于 p()
27.函数调用的细节