指针数组,数组指针,函数指针,函数指针数组,指向函数指针数组的指针
发布日期:2021-09-19 03:18:18 浏览次数:2 分类:技术文章

本文共 1407 字,大约阅读时间需要 4 分钟。

1> 指针数组:int *arr[10]; 它是一个数组,数组的每个元素都是指针,数组占多少个字节有数组本身决定。([]的优先级高于*,所以arr先于[]构成数组,数组类型为int *)

2>数组指针:int (*arr)[10]=&array;它是一个指针,指针指向的数组有10个元素,它在32系统下永远占4个字节。(()的优先级高于[],所以它是一个指针)

3>函数指针:指向函数的指针  函数类型(*指针变量名)(形参列表);

               注:函数指针和它所指向的函数的参数个数和类型应该是一致的

                      函数指针的类型和函数的返回值必需一致

#include
#include
void fun(const char *str){ printf("%s\n", str);}int main(){ void(*pfun)(const char *) = &fun;//函数指针,指针有能力指向一个函数 (*pfun)("hello world"); system("pause"); return 0;}

4>函数指针数组:void * (*pf[3])(char *p);

它是一个数组,数组名为pfun,数组内存了3个指向函数的指针

#include
#include
void fun1(const char *str){ printf("fun1:%s\n", str);}void fun2(const char *str){ printf("fun2:%s\n", str);}void fun3(const char *str){ printf("fun3:%s\n", str);}int main(){ int i = 0; void(*pfun[3])(const char *) = { fun1, fun2, fun3 };//函数指针数组 for (i = 0; i < 3; i++) { pfun[i]("hello world"); } system("pause"); return 0;}

5>指向函数的指针数组的指针: char* (*(*pf)[3])(char *p);

是一个指针,该指针指向一个数组,该数组里存放的都是指向函数的指针。

#include
#include
void fun1(const char *str){ printf("fun1:%s\n", str);}void fun2(const char *str){ printf("fun2:%s\n", str);}void fun3(const char *str){ printf("fun3:%s\n", str);}int main(){ void *(*a[3])(char *); void *(*(*pfun)[3])(const char *); pfun = &a; a[0] = fun1; a[1] = &fun2; a[2] = &fun3; pfun[0][0]("hello world"); pfun[0][1]("hello world"); pfun[0][2]("hello world"); system("pause"); return 0;}

转载地址:https://blog.csdn.net/audience_fzn/article/details/77012346 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:智能指针(一)之引入
下一篇:模拟实现mymcpy,memmove,strncpy

发表评论

最新留言

表示我来过!
[***.240.166.169]2024年04月12日 12时03分46秒

关于作者

    喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!

推荐文章