一.何为指针?
1.指针实质是用来存放地址的变量。
2.指针的大小在32(64)位编译环境中为4(8)个字节。
二.指针的分类
int a = 10;
int* p = &a//整型指针,指向整型的指针
char ch = 'g';
char* pch = &ch;//字符指针,指向字符的指针
char a[10] = {'0'};
char (*pa)[10] = &a;//数组指针,指向数组的指针
void function(int x, int y)
{
//功能实现
}
int (*pfun)(int, int) = function;//函数指针,指向函数的指针。function
//和&function都能取出函数的地址。指针名为pfun,剩余部分int (*)(int, int)为指针类型,
//其中第一个int为指针指向的函数的“返回类型”,后面的(int, int)为指针指向的函数
//的“参数类型”。
指针类型的作用:指针的类型决定了指针的步长;也决定了指针解引用后可以访问的内存大小。
三.指针数组
注意:要区别“指针数组”与“数组指针”,“指针数组”是存放指针的数组,本质上是数组;“数组指针”是存放数组地址的指针,也就是数组的地址,本质上是指针。这里给出个人的一个区别方法,由于下标操作符“[ ]”的优先级高于解引用操作符 “ * ”,要定义数组指针就要在 “ *p ”的两端加上(),例如:
char* p[10];//指针数组
char (*p)[10];//数组指针
指针数组的分类
int arr0[10];//整型数组,存放一组整型数据的数组
char arr1[10];//字符数组,存放一组字符数据的数组
int* arr2[10];//整型指针数组,存放一组整型指针的数组
char* arr3[10];//字符指针数组,存放一组字符指针的数组
int (*fun[10])(char, int);//函数指针数组,存放一组函数指针。数组名为"fun",大小为10,
//剩余部分int (* )(char, int)为存放的函数指针类型
四.指向函数指针数组的指针
先从字面上来理解这个概念:首先可以看出这是一个指针,指向一个数组的指针,而这个数组存放的是一组函数指针。
定义一个指向函数指针数组的指针:
void (*pfun)(int,char);//定义函数指针
void (*pfunArr[10])(int, char);//定义函数指针数组
void (*(*ppArrfun[10]))(int, char);//定义指向函数指针数组的指针,本质就是一个数组指针
二级指针,指针的传参,指针数组的运用将在下期博客发表,如有错误或是描述不准确之处还望指正。