指针是c语言的灵魂所在,然而因为其过于灵活,在使用的过程中难免出错。接下来我们简单分析一下常见的指针运用。
指针:
1 一级指针
char *p1 = “abcdef”;
2 二级指针
char **p2 = &p1;
指针数组:
1 char *arr[5] ; (在数组中存放5个char* 指针)
指针数组指针
1 char* arr[5];
char * (*parr)[5] = &arr;
parr就是指向指针数组arr的指针 (即parr为指针数组的指针)
数组指针:
1 int arr[5] = {1,2,3,4,5};
int (*p)[5] = &arr ; p即为指向数组的指针,又称数组指针。
数组指针的数组:
int arr1[3] = {1,2,3};
int arr2[3] = {4,5,6};
int (*parr[2])[3]={arr1,arr2};
函数指针:
先写一个简单的函数
int add(int x, int y)
{
return x+y;
}
int (*pfun)(int, int);
pfun = add;
这样一来 pfun就是指向函数add的指针(即函数add的指针)。
下面是定义一个函数指针的方法:
指向函数指针数组的指针:
函数指针数组也是指针数组,在这个数组中存放的是函数的指针
eg: 我们先写加减乘除四个子函数。
int (*pfunarr[4])(int, int) = {add, sub, mul, div};//这个数组就是函数指针数组 pfunarr就是指向函数指针数组的指针