指针与数组,指针与函数之间的关系
2017-02-13 23:41
197 查看
指针数组和数组指针
指针数组,它的关键在于是一个数组,即数组中每个元素都是指针。数组指针,他的关键在于是指针变量,即这个指针指向一个数组。
#include<stdio.h> int main () { int arr [4] = {0};//这是一个数组,大家都知道。 int *parr1[4];//这是指针数组,首先[]的优先级比*的优先级高,所以parr //先与[]结合,它是一个数组,然后再与*结合,即数组中的 //每个元素都是指针。 int (*parr2)[4];//这是数组指针,因为()的优先级比[]的高 //所以parr是一个指针变量,然后与[]结合 //所以,这是数组指针。 int *(*parr3)[4];//较为复杂一点的数组指针,首先parr3是一个指针变量, //然后与[]结合,变为数组指针,而前面又有*,所以它可以指 //向一个大小为3个元素的数组,每个元素是指针。 }
函数指针
函数指针就是函数的指针,他是一个指针,指向一个函数。#include <stdio.h> #include <string.h> char* fun (char *p1,char *p2) { int tmp = 0; tmp = strcmp(p1,p2); if (tmp==0) { return p1; } else { return p2; } } int main () { char *(*pfun)(char *p1,char *p2); pfun = &fun; (*pfun)("aa","bb"); return 0;}//这个例子就很好的解释了函数指针这个定义。我们清楚表达式 //"char*(*pfun)(char*p)"定义的是一个函数指针pfun。 //首先通过(*pfun)取出存在这个地址上的函数,然后调用。
函数指针的数组
函数指针的数组,它是一个数组,数组中的每个元素是一个函数指针,这个指针可以指向一个函数。#include <stdio.h> #include <string.h> char *fun1(char*p) { printf ("%s\n",p); return p; } char *fun2 (char *p) { printf ("%s\n",p); return p; } char *fun3 (char*p) { printf ("%s\n",p); return p; } int main () { char *(*pfun[4])(char *p)//这里的表达式表示的就是函数指针的数组 pfun[1] = fun1;//可以直接用函数名表示地址 pfun[2] = &fun2;//也可以在函数名前加取地址符号。 pfun[3] = &fun3; }
函数指针数组的指针
它指的还是一个指针,只不过这个指针指向一个数组,这个数组里的元素是可以指向函数的指针,有点绕。void (*(*pfun)[3])(char *)//首先pfun是一个指针变量,然后指向一个数组,这个 //数组有三个元素,这几个元素可以指向函数的指针,函数 //的参数是char *,返回值为 void
相关文章推荐
- 数组,指针与函数之间的关系
- 指针与函数及指针与数组之间的关系
- 4.3 指针,数组和指针算术之间关系
- c/c++(疑4) 指针数组和数组指针之间关系
- 浅谈 数组指针 指针数组 函数指针 函数指针数组... 以及它们之间区别。
- 指针数组和数组指针之间关系
- 彻底搞清C/C++中一维数组,二维数组,指针,数组指针和指针数组以及指向指针的指针,行地址和列地址之间的关系
- NDK探究之旅《五》——指针和数组之间的关系
- 数组<->指针<->动态数组之间的关系
- c/c++ 函数、常量、指针和数组的关系梳理
- c/c++ 函数、常量、指针和数组的关系梳理
- c语言,指针和数组大小之间的关系
- 数组以及数组与指针的关系及函数返回值的
- 常见的指针与数组名以及函数名之间的区分
- c/c++(疑3) C语言指针与数组之间关系
- 数组 与 指针 之间的关系 分析
- 指针与数组、函数、结构体等之间相关问题
- 指针数组,数组指针,函数指针,函数指针数组,指向函数指针数组的指针之间的区别
- C语言指针回顾(四) 指针与数组之间的关系
- 彻底搞清C/C++中一维数组,二维数组,指针,数组指针和指针数组以及指向指针的指针,行地址和列地址之间的关系