函数指针&&命令行参数
C语言中比较高级的部分
函数指针:
程序运行期间,每个函数都会占用一段连续的内存空间。而函数名就是该函数所占内存区域的起始地址。
我们可以将函数的入口地址赋给一个指针变量,使该指针变量指向该函数。然后通过指针变量就可以调用这个函数。
这种指向函数的指针变量成为"函数指针"。
定义形式
类型名(* 指针变量名)(参数类型1,参数类型2,...)
int(*pf)(int ,char)
1 #include<stdio.h> 2 void PrintMin(int a, int b){ 3 if(a<b) 4 printf("%d",a); 5 else 6 printf("%d",b); 7 } 8 int main(){ 9 void (*pf)(int, int); 10 int x=4, y=5; 11 pf = PrintMin; 12 pf(x, y); 13 return 0; 14 }
函数指针和qsort库函数,函数指针有大用处。
qsort可以对任意类型的数组进行排序。
void qsort(void *base, int nelem, unsigned int width, int(*pfCompare)(const void*, const void *));
对数组排序,需要知道:
1 数组起始地址
2 数组元素个数
3 每个元素大小
4 元素谁在前谁在后的规则
pfCompare: 指向比较函数的地址(函数指针)
#include<stdio.h> #include<stdlib.h> int MyCompare(const void *elem1, const void *elem2) { unsigned int *p1, *p2; p1 = (unsigned int*)elem1; p2 = (unsigned int*)elem2; return (*p1%10) - (*p2%10); } #define NUM 5 int main() { unsigned int an[NUM] = {8,123,11,10,4}; qsort(an ,NUM , sizeof(unsigned int), MyCompare); for(int i=0; i<NUM; i++) printf("%d", an[i]); return 0; }
命令行参数
cmd
notepad sample.txt
int main(int argc, char * argv[])
{
....
}
标签:
C++
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 【自荐】一款简洁、开源的在线白板工具 Drawnix