目录
1.基本概念
- 指针是个变量,用来存放地址,地址唯一标识一块空间内存
- 指针的大小是固定4/8个字节
- 指针有类型,指针的类型决定了指针+整数的步长
2.字符指针
表示方法有如下两种:
char ch="luckly";
char *p=&ch;
*p="luckly";
char *pstr ="luckly";//直接用指针指向
printf("%s\n",pstr);
return 0;
3.指针数组
- 存放指针的数组
4.数组指针
- 指向数组的指针
- int (*p) [10] :[]的优先级是高于*的,所以必须加上()来保证*与p先结合成一个指针变量
- 存放的是数组的地址,而非数组本身
int * p 指向整型数据的指针
float * p 指向浮点型数据的指针
- arr与&arr
arr是数组名,代表数组首元素的地址
&arr代表整个数组,表示数组的地址
虽然arr与&arr的值相同,但意义是不同的。如上图,可了解。
例:
- *(arr+1) 表示首元素地址+1
- int(*arr)[10] 数组指针;int(*parr3[10])[5] 存放指针数组的数组;
5.函数指针
void(*pfun)() :pfun先和*结合,说明pfun是指针,指针指向一个函数,指向的函数无参数,返回值类型为void 类型
int (*fun)(int a, int b):fun是指针,指向参数为int a 和int b ,返回值为int型
5.1函数指针数组
int (*parr[10])():parr先和[]结合,说明parr是数组,数组的内容是int(*)()类型的函数指针
用途:转移表
5.2指向函数指针数组的指针
是一个指针,指向一个数组,数组的元素都是函数指针
void(*(*p)[5])(int,int)
6.回调函数
- 回调函数就是通过函数指针调用的函数。
- 回调函数一般通过函数指针实现
- 回调函数一般不是函数的实现方调用,而是在特定的场景下,由另外一方调用。
(有待继续学习,不是很了解)
一道例题帮助理解今天的概念OvO