C语言如何使用数组指针与函数指针
发表于:2025-11-07 作者:千家信息网编辑
千家信息网最后更新 2025年11月07日,这篇文章主要为大家展示了"C语言如何使用数组指针与函数指针",内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下"C语言如何使用数组指针与函数指针"这篇文章吧。函数
千家信息网最后更新 2025年11月07日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安全错误
数据库的锁怎样保障安全
虹口区使用网络技术
直销软件开发费用
国外云服务器哪家最好
博易大师服务器地址
校园网网络安全评估
昆山电脑网络技术员
魔兽正式服亚雷戈斯服务器
软件开发的logo图片
实时连接as400数据库
数据库图书馆管理系统毕业设计
美国网络安全最新动态
2022浪潮服务器一季度财报
网络安全隐患整改情况报告
安徽通信软件开发设施服务标准
默安科技和网络安全
永州软件开发报价
全自动软件开发
服务器崩溃了三次
联想集团数据库设计
java写一个数据库的登录
软件开发自动点击
肇庆数据链软件开发
网络安全A4的手抄报
山西定制软件开发
那种女生适合软件开发
软件开发发展战略怎么写
热血江湖高防服务器
上海盈游网络技术有限公司
软件开发和工程
如何提高网络安全预算