1 指针就是地址,地址就是指针
2 指针变量 :专门用来存储地址的变量。
3 指针变量的声明: 数据类型* 指针变量名 int* p1; 1个指针变量智能存储和这个指针变量类型相同的普通变量的地址。
4 指针变量的初始化:
使用&获取地址符号取出变量的地址 ,然后将这个地址赋值给指针变量。
int num=10; int * p1 = # p1就是个指针变量,存储的是num的地址。p1指向了num变量,p1的值是num变量的地址,p1自己也有地址,因为他是一个变量。
5 指针的使用
使用指针去间接的访问指针指向的变量。 *指针变量名:代表这个指针指向的变量, int num=10; int * p1=# *p1 =100;
6 注意的细节
野指针
NULL值 int* p1 = NULL;
多个指针指向1个变量的问题。
7 多级指针
一级指针:1个指针如果指向的是一个普通变量,那么这个指针就叫做一级指针、
二级指针:
初始化的问题:
int num =10;
int * p0 = #
int ** p1 = &p0;
8 指针作为函数的参数
函数的内部可以直接修改实参变量的值。
当函数需要向调用者返回多个数据的时候。
9 指针的类型:
任意类型的指针变量,在内存中都是占8个字节。
通过指针变量只能找到这个地址的字节。
int num=10; int * p1 = # 找到这个字节以后,是按照变量来操作,根据指针类型决定
所以:一定要指针的类型和指针指向的变量的类型要对应。
10: 指针与整数的加减法
int * p1 =#
p1+1; 结果是一个地址,是一个指针,代表加一个单位变量的字节数。
11 指针与数组
12 当数组作为函数的参数的时候 如果数组要作为函数的参数 那么久不用写数组了而是写一个指向数组的指针。
13 中括弧的本质 p1[n] = *(p1+n)
14 指针的运算。