浅谈指针数组、数组指针及函数指针
来源:互联网 发布:孙骁骁家庭知乎 编辑:程序博客网 时间:2024/05/22 13:41
C语言中,指针可以说是C语言的灵魂,我们想要熟练运用C语言,必须深入的了解指正的各种类型,及其该如何运用。
以下是我对一些指针的总结:
1、指针数组
2、数组指针
3、函数指针
4、函数指针数组
5、指向函数指针数组的指针
一、指针数组
指针数组:是一个数组,数组的每一个元素都是指针。
例如:
int *arr[10] 一个存放 10个 int * 指针的数组 char **arr[10] 一个存放 10 个 int ** 指针的数组
二、数组指针
数组指针:数组指针是一个指针,该指针指向的是一个数组。
例如:
int (*p)[10] 一个p指针,指向一个数组大小为10的数组
指针数组,数组指针,名字绕口,但我们区分他们,只需要掌握 ‘ * ’ 和 ‘ [ ]’的优先级,‘ [ ]’的优先级比‘ * ’高,而()的优先级又比‘ [ ] ’高。
如上面的例子
int arr[10] ,arr先与‘[ ]’先结合,它肯定是一个数组,存放的是int ,所以是指针数组。
int (p)[10] , p先与 ‘ ’结合,它肯定是一个指针,指向的是int型大小为10的一个数组。
我们在使用数组指针的时候应该注意,类型是否匹配。如果要接受一个数组的指针,我们应该定义接受数组地址的指针为数组指针。
int arr[5] = {0};int *p = &arr; //这是类型不匹配,&arr得到的是数组的地址int (*p)[5] = &arr; //正确
三、函数指针
函数指针:函数指针就是一个指针,指向一个函数。
我们知道函数也是有地址的,当我们想调用函数的时候,我们可以通过它的地址使用它。就是函数指针。使用它的时候我们也需要注意类型匹配的问题。
void (*pfun)() //pfun与‘*’结合,是一个指针,指向的是一个返回值为void,没有参数的函数
四、函数指针数组
函数指针数组:它是一个数组,数组每个元素都是一个函数指针。
下面是一个函数指针数组简单使用的例子:
int test1(int x,int y){ return x+y;}int test2(int x, int y){ return x-y;}int main(){ int num = 0; int num1 = 0; int num2 = 0; int ret = 0; int (*p[3])(int x,int y) = {0,test1,test2}; printf("*******************\n"); printf("***1.add 2.sub***\n"); printf("*******************\n"); printf("please enter:\n"); scanf("%d",&num); if(num == 1) { printf("enter num1 & num2:\n"); scanf("%d %d",&num1,&num2); ret = p[1](num1,num2); //函数指针数组的使用 } else if(num == 2) { printf("enter num1 & num2:\n"); scanf("%d %d",&num1,&num2); ret = p[2](num1,num2); //函数指针数组的使用 } printf("输出结果为 %d\n",ret); system("pause"); return 0;}
五、指向函数指针数组的指针
函数指针数组的指针:是一个指针,指针指向一个数组,数组的每个元素是函数指针。
void test(const char* str){printf("%s\n",str);}int main(){void (*pfun1)(const char*) = test; //函数指针pfun1void (*pfun2[3])(const char *str); //函数指针数组pfun2pfun2[0] = test; void (*(*pfun3)[3]))(const char*) = &pfun2;//指向函数指针数组的指针pfun3return 0;}
我们只有知道‘ * ’和‘ [ ] ’的优先级,我们就能区别是指针还是数组。以上就是我对一些指针的总结。
- 浅谈指针数组、数组指针及函数指针
- 浅谈 指针数组&数组指针 指针函数 函数指针
- 浅谈数组指针、指针数组、函数指针、函数指针数组、函数指针数组指针,个人见解。
- 指针函数与函数指针,指针数组及数组指针
- 指针,指针数组,数组指针,函数指针
- 实例浅谈函数指针数组
- 函数指针指针数组
- 数组指针、函数指针
- 指针&数组&函数指针
- 函数指针数组指针!
- 函数指针及函数指针数组
- 指针数组及数组指针
- 指针数组,数组指针,函数指针,指针函数,多级指针
- 函数指针、指针数组与数组指针
- 解析 指针数组,数组指针,函数指针
- 函数指针、数组指针、指针数组
- 函数指针,数组指针,指针数组
- C++指针数组、数组指针、函数指针
- 物联网技术科普~
- C和指针之字符串编程练习10(判断字符串是否是回文数)
- 爱因斯坦提出的台阶问题
- kali2017安装中文输入法
- 什么是高并发 ,详细讲解
- 浅谈指针数组、数组指针及函数指针
- HTTP状态码
- 树的遍历
- 锚点定位
- 阿里云ssl tomcat nginx https
- 自己对JVM新生带的理解
- 加法电路原理
- new 关于java多线程 > ThreadLocal
- java包装类型 “==”的比较(Integer,long等)