新闻详情

新闻详情

首页 / 资讯中心 / 详情

打卡第二天指针

发布时间:2026/8/31 4:29:54来源:尧图网络
打卡第二天指针
指针完结#includestdio.h#includestdlib.h//void test(int a[3][5], int r, int c)//{// int i 0;// int j 0;// for (i 0; i r; i)// {// for (j 0; j c; j)// {// printf(%d , a[i][j]);// }// printf(\n);// }//}//void test(int (*p)[5], int r, int c)//类比一维数组的传参二维数组传参是二维数组的首地址即第一行地址是一个数组指针//{// int i 0;// int j 0;// for (i 0; i r; i)// {// for (j 0; j c; j)// {// printf(%d , *(*(p i) j));// }// printf(\n);// }//}//int int_cmp(const void* p1, const void* p2)//{// return (*(int*)p1 - *(int*)p2);//}//void*无类型指针加(int*)强制转换为int类型前面加*解引用,这个函数是排序规则说明p1大于p2升序//qsort比较结构体structStu{charname[20];intage;};intcmp_stu_by_age(constvoid*e1,constvoid*e2){return((structStu*)e1)-age-((structStu*)e2)-age;}//强制转换为Stu类型再用-指向ageintcmp_stu_by_name(constvoid*e1,constvoid*e2){returnstrcmp(((structStu*)e1)-name,((structStu*)e2)-name);}intmain(){//int arr[10] { 1,2,3,4,5,6,7,8,9,10 };//printf(arr[0] %p\n, arr[0]);//printf(arr[0]1 %p\n, arr[0] 1);//printf(arr %p\n, arr);//printf(arr1 %p\n, arr 1);//这两个都是数组首地址1是根据int类型跳4个字节//printf(arr %p\n, arr);//printf(arr1 %p\n, arr 1);//arr1即跳过整个数组/*const char* pstr hello world.;*///这是把字符串的首字母地址放到了pstr中//char str1[] hello bit.;//char str2[] hello bit.;//const char* str3 hello bit.;//const char* str4 hello bit.;//if (str1 str2)// printf(str1 and str2 are same\n);//else// printf(str1 and str2 are not same\n);//if (str3 str4)//str3和4指向同一字符串// printf(str3 and str4 are same\n);//else// printf(str3 and str4 are not same\n);//int* p1[10];//指针数组本质是数组里面存放的地址//int (*p2)[10];//数组指针本质是指针指向数组/*int arr[10] { 0 }; int(*p)[10] arr; printf(%p\n, p); printf(%p\n, p1); printf(%p\n, arr); printf(%p\n, arr1); printf(%p\n, arr); printf(%p\n, arr1);*///由这部分代码可得p数组指针和arr数组首变量地址和arr数组地址输出的都是首地址//但进行指针运算可以得到p等效arr整个数组地址即1直接跳出数组//传参数组名作为参数函数形参退化成首元素地址如果arr是函数参数也就是在函数中sizeofarr1在函数外arr在sizeof内才升级为整个数组字节数//int arr[3][5] { {1,2,3,4,5}, {2,3,4,5,6},{3,4,5,6,7} };//test(arr, 3, 5);//在这里arr相当于函数里的形参*p[5]////printf(%p, test);//函数地址//如果想储存函数地址//对于无返回值函数可用(*p)()//对于有返回值函数(*p)(变量类型 变量名可省略 )例(*p)( int x ,int y),xy可以不写//调用函数代码输出可以调用函数//typedef关键字//typedef undesigned int uint 可以把复杂的定义类型转换为简单好写的形式/*int x, y; int input 1; int ret 0; int(*p[5])(int x, int y) { 0, add, sub, mul, div };*///调用四个函数为避免复杂的利用可以这样定义利用p[input]可以调用四个函数//int(*)()是变量类型说明存进去的是函数指针p[5]说明变量是个数组//回调函数用函数指针调用的函数//像上面那个用数组储存函数地址再调用的思路可以进一步再写一个函数void calc(int(*pf)(int, int))//分析一下int(*)(int ,int)是返回值类型 pf是返回值形参这个整体是说明返回值是函数指针也就是函数名这样就可以用calc(函数名)直接调用函数在一些重复编码只有调用函数不同的环境可用//int arr[] { 1, 3, 5, 7, 9, 2, 4, 6, 8, 0 };//int i 0;//qsort(arr, sizeof(arr) / sizeof(arr[0]), sizeof(int), int_cmp);//四个参数arr是读取数组首地址第二个是数组里元素个数第三个是每个元素的字节数最后一个是函数地址是排序规则//for (i 0; i sizeof(arr) / sizeof(arr[0]); i)//{// printf(%d , arr[i]);//}//printf(\n);//qsort比较结构体structStus[]{{zhangsan,20},{lisi,30},{wangwu,15}};intszsizeof(s)/sizeof(s[0]);inti0;qsort(s,sz,sizeof(s[0]),cmp_stu_by_age);for(i0;i3;i){printf(%s %d\n,s[i].name,s[i].age);}qsort(s,sz,sizeof(s[0]),cmp_stu_by_name);for(i0;i3;i){printf(\n%s %d\n,s[i].name,s[i].age);}//sizeof和strlen//sizeof是操作符是求所占字节数strlen是库函数所求字符串长度\0前面的字符数量return0;}
网站建设高端定制企业官网
RELATED

相关资讯

更多精彩内容,欢迎继续阅读

较早相关资讯

最新相关资讯

经济学讲通货膨胀,为什么你写的文档也会「标题泛滥、重点贬值」 2026/8/31 21:10:20

经济学讲通货膨胀,为什么你写的文档也会「标题泛滥、重点贬值」

01 前言 今天聊一个长文档很容易犯的问题:标题层级的通胀。 跟经济学里的通货膨胀很像:钱印多了,每一张的购买力就下降了。标题也是一样,层级用多了,每一层的「导航力」就被稀释了。 读者的注意力是有限的&#xff…

阅读更多 →
从IDM到实验DnB:解析Sadesper Record的碎拍与低音设计 2026/8/31 21:10:19

从IDM到实验DnB:解析Sadesper Record的碎拍与低音设计

最近整理旧电子乐唱片时又翻出 Sadesper Record 的 Externalization 1。这张 1999 年的 IDM / 鼓打贝斯专辑,不是那种会被平台算法反复推送到你面前的热门货,但如果你喜欢节拍细碎、低音深沉、氛围感很强的实验电子乐,它值得放进待听清单。先…

阅读更多 →
LLM没有意识:模式补全机制与工程实践指南 2026/8/31 21:10:19

LLM没有意识:模式补全机制与工程实践指南

关于 LLM 是否存在意识、智能或人格的讨论,最近在开发者社区里越来越频繁。很多人第一次用大模型时,都会被那种“它在认真理解我”的体验震撼到:它能回答刁钻的问题,能承认错误,能给出安慰,甚至会表现出幽默…

阅读更多 →
双参数恒成立问题:赋值法破解导数压轴题 2026/8/31 21:10:19

双参数恒成立问题:赋值法破解导数压轴题

很多同学在导数压轴题里遇到“双参数恒成立”时,第一反应就是求导、找极值、分类讨论。结果往往越讨论越乱:两个参数互相牵制,极值点与参数有关,分类表写得比答题卡都长,最后还容易漏情况。实际上,这类题有…

阅读更多 →
selenium实战记录-从登陆-首页-进入应用流程用例三种参数化+日志+报告 2026/8/31 21:10:19

selenium实战记录-从登陆-首页-进入应用流程用例三种参数化+日志+报告

json数据 1、准备json数据: {"login_success": {"enterprise": "ydhl","account":"ganfeimei","psd": "Ydhl123456","expect": "甘飞梅原点演示"} }2、编写读取json数据…

阅读更多 →
基于YOLOv8的基建裂缝检测系统:从数据集构建到部署全流程 2026/8/31 21:07:19

基于YOLOv8的基建裂缝检测系统:从数据集构建到部署全流程

简介:本资源是一套基于YOLOv8的基础设施裂缝目标检测系统,专为计算机视觉方向的本科毕业设计、课程设计及期末大作业打造,面向具备基础Python与深度学习认知的学习者,解决土木工程巡检中裂缝自动识别与定位的实际问题。压缩包共84…

阅读更多 →

今日资讯

本周资讯

本月资讯

看完文章仍有疑问?

联系尧图顾问,获取一对一建站咨询

立即免费咨询 📞 400-888-8888
📞