C语言如何使用数组指针与函数指针
发表于:2026-11-01 作者:千家信息网编辑
千家信息网最后更新 2026年11月01日,这篇文章主要为大家展示了"C语言如何使用数组指针与函数指针",内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下"C语言如何使用数组指针与函数指针"这篇文章吧。函数
千家信息网最后更新 2026年11月01日C语言如何使用数组指针与函数指针
这篇文章主要为大家展示了"C语言如何使用数组指针与函数指针",内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下"C语言如何使用数组指针与函数指针"这篇文章吧。
函数指针语法
定义一个函数指针,并通过函数指针间接调用函数:
int get_num(int a, int b){ return a + b;}int (*func)(int a, int b); //定义了一个函数指针func,它指向 返回值为int 参数为 int a, int b的函数func = &get_num; //函数指针指向函数func(1, 2); //通过函数指针调用函数通过定义一个函数指针类型来定义一个函数指针:
typedef int (*func)(int a, int b); //定义了一个函数指针类型func func1 = &get_num; //使用函数指针类型func定义函数指针变量func1
定义一个函数类型,并使用函数类型来定义一个函数指针
typedef int (func)(int a, int b); //定义了一个函数类型func* func1 = &get_num;func1(1, 1); //间接调用
函数指针约定了函数的返回值和函数参数,功能开发者只要根据这个约定实现功能函数,就可以通过以函数指针为参数的统一接口进行调用,来使用这个函数的功能,实现了功能开发与功能使用的解耦合。这就是函数指针的巨大作用:函数指针做函数参数
另外函数指针的正向调用使用场景,比如通过把动态库加载到程序中,在动态库中查找到函数入口地址来调用函数。
数组指针与指针数组
数组指针是指向数组的指针;指针数组是指针的数组。
数组指针举例
#define _CRT_SECURE_NO_WARNINGS #include#include #include void PrintArray_int(int* array, int len){ if ((NULL == array) || (len < 0)) { printf("err:(NULL == array) || (len < 0)\n"); return; } for (int i = 0; i < len; i++) { //两种方法访问数组元素 //printf(" %d ", array[i]); printf(" %d ", *(array + i)); } printf("\n");}int main(){ //定义一个数组变量 int num_array[10]; // num_array + 1 移动 sizeof(int) 个字节 int len = sizeof(num_array) / sizeof(num_array[0]); //memset(num_array, 0, sizeof(num_array) / sizeof(num_array[0])); //典型错误,只把十个字节的内存值为0 memset(num_array, 0, sizeof(num_array)); //实际应该把40个字节置为0 PrintArray_int(num_array, sizeof(num_array) / sizeof(num_array[0])); //定义一个数组类型 typedef int(array1_t)[]; typedef int(array2_t)[10]; array1_t a1 = {1, 2, 3}; array2_t a2; for (int i = 0; i < 10; i++) { a2[i] = i; } PrintArray_int(a1, sizeof(a1) / sizeof(a1[0])); PrintArray_int(a2, 10); //定义一个数组指针 int(*p_array)[10]; // p_array + 1 移动 sizeof(int) * 10 个字节 p_array = &num_array; for (int i = 0; i < 10; i++) { (*p_array)[i] = i + 1; } PrintArray_int(*p_array, 10); //定义一个指向数组的指针类型(数组指针) typedef int(*p_array_t)[10]; p_array_t p1 = &num_array; for (int i = 0; i < 10; i++) { (*p1)[i] = i + 2; //先解引用,还原为一级指针(数组本身可以看为一级指针 //数组指针是指向数组的指针,也就是指向一级指针的指针,即二级指针) } PrintArray_int((*p1), 10); //指针数组 const char* p2[2] = { "aaa", "bbb" }; //p2[0] 和 p2[1] 都是一个指针 printf("%s\n", p2[0]); printf("%s\n", p2[1]); system("pause"); return 0;}
以上是"C语言如何使用数组指针与函数指针"这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注行业资讯频道!
指针
函数
数组
类型
指向
功能
参数
字节
语言
内容
篇文章
动态
变量
学习
帮助
开发
移动
约定
巨大
也就是
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
广州大一互联网络科技有限公司
广州百单互联网科技有限公司
盈实互联网科技
贷财互联网科技
腾讯科技 互联网女皇
互联网科技小额贷款
金融科技和互联网金融
海南购全球互联网科技
济南和联互联网科技有限公司
西藏七维空间互联网科技有限公司
北京华百购互联网科技有限公司
重庆威客帮互联网科技
如何创新互联网科技
长沙互联网科技
普陀区互联网教育科技管理办法
互联网科技手抄报图片
互联网科技和医药行业
三亚科技创新互联网基地
互联网科技博主张洲
青岛易易互联网科技
奇酷互联网科技
万易互联网科技有限公司
互联网科技的英文
互联网科技缩写
电子科技大学互联网
现代科技和互联网有关系吗
青岛中康互联网医疗科技有限公司
互联网为啥属于高科技
富国互联网金融科技混合基金
九思连强互联网电子科技有限公司