目录
一、什么是指针?
1.指针 就是 它指向空间的地址
姿势: 指向空间的类型 *变量名字;
例如: int *p; //p是一个int类型的空间地址,p指向int类型空间
2.取地址 解引用:
取地址例如:
int a=10;
int *p=&a;
int **pp=&p;
解引用:
通过地址去得到该地址指向的那块空间
取地址和解引用是一对相反的操作;
*&a ===> a
二、指针和数组之间的关系: 数组指针
一个指针指向一个数组 //该指针是某一个数组的地址
例如:
short arr [5];
short *p = arr; //p指向该数组的第一个元素short
short brr[2][3];
short (*p)[3] = brr; // p 指向 short [3] // 数组指针
三、指针与指针之间的关系: 多级指针
一个指针指向另外一个指针 :多级指针
例如:
int a= 10;
int *p =&a; //p指向a空间 //p为指针
int **pp = &p; //pp指向一级指针变量p //pp为二级指针
int ***ppp = &pp; //ppp指向 二级指针变量pp //ppp为三级指针
四、指针与函数之间的关系: 函数指针
一个指针指向函数 //该指针是 某个函数的地址 //函数指针
例如:
//* 函数的名字就是函数的首地址(函数指针)
short fun(short s,int c){}
fun的类型:
short (*)(short,int)
short (*p)(short,int) = fun;
p(10,20); // fun(10,20);
举个例子:
int a = 10;
fun(int b)
{
}
fun(a); //
short a = 10
fun(short b)
{
}
fun(a);
short (*a)(short,int) ;
fun(short (*b)(short,int))
{}
fun(a);
使用:
回调函数:一个函数作为另外一个函数的参数
五、 指针与结构体之间的关系: 结构体指针
一个指针 指向 结构体:结构体指针
struct point{
int x;
int y;
};
struct point sp;
sp.x = 10;
struct point *psp = &sp;
psp->x = 10;