1、指针变量也是一个变量,是变量就可以赋值
2、指针指向谁,就把谁的地址赋值给指针
3、*变量 操作的是指针所指向内存,可以用来 被赋值 与 取值
4、不可定义void类型的变量,因为不能确定类型
5、可定义void 变量,void 指针也叫万能指针
6、void *可以指向任何类型的变量,使用指针所指向的内存时,要先转换为它本身的指针类型
7、指针步长是根据指针类型决定的,所以用万能指针时要注意转换类型再操作
8、const int *name修饰的是指针所指向空间为只读,不能修改空间里的内容,但指针变量依然可以指向其他地址
9、int * const name修饰的是指针变量所指向的地址和空间里的内容都为只读
10、指针数组也是数组,但元素存放的是指针地址,赋值的写法有两种(p[索引]=&a[索引],p[索引]=a+索引),操作指针指向内存的写法也有两种(p[索引]=值,(*p+索引)=值)
11、值传递,不管这个变量是什么类型,只要是变量本身传递,就是值传递
12、地址传递,可以理解为 函数外调用函数并传递变量地址,函数内对指针指向内存进行操作
13、形参中的数组,不是数组,它是普通指针变量,例如这三种写法对于编译器而言都是等价的:int a[10000]; int a[]; int *a;,编译器最终都会当做 int *a 做处理
14、指针数组,它是数组,每个元素都是指针
15、数组指针,它是指针,指向数组的指针
16、各种环境对于返回局部变量地址的操作是不同的,例如linux返回空(0)
17、解引用和解指针,可以理解为通过地址找到里面的内容
由 4 5 得到结论,变量是系统根据类型分配内存大小,而指针是系统先得到首地址,再根据指针类型得到截止地址,以取得一个区域的内存。