C语言复习——一个有意思的使用指针形参的函数

复制代码
int sump(int * start, int * end)

{

    int total = 0;

    while(start < end)

    {

        total += *start;            //1

        start++;                   //2

    }

    return total;

}

其中,1、2两句可以合并为total += *start++;因为因为++与*运算优先级是同等的,但结合律是从右往左的,故会先进行start++,再进行*start。简单讲,指针先指向后递增,等同于*(start++)。

另外采用*start++意味着会先把指针指向位置的值加到total上,再递增指针。若采用*++start,则反过来,先递增指针的,在使用指针指向位置上的值加到total上。简单讲,指针先递增后指向。

(*start)++则表示指针指向的值进行递增。指针指向一直不变,为start的地址。变化的仅是该地址上的值。

注意,只有当start为指针变量时,才有start++这样的表达式。

另外,数组与指针是相互联系的,可以相互替换的。一维与多维均可。

复制代码
pr = arr;
arr[size] 等同于 *(pr + size)    //一维数组
arr[2][3] 等同于 *(*(pr + 2) + 3) 等同于 pr[2][3] //二维数组
相关推荐
我是一颗柠檬2 分钟前
【Java项目技术亮点】EXPLAIN深度分析与慢查询治理
android·java·开发语言
万亿少女的梦1684 分钟前
基于Spring Boot的社区管理系统设计与实现
java·spring boot·mysql·vue·系统设计
luj_17686 分钟前
草酸与烟酸对消化及糖代谢的影响解析
服务器·c语言·开发语言·经验分享·算法
大气的小蜜蜂14 分钟前
领域层的服务
java·前端·数据库
agent89716 分钟前
Spring Boot 接口超时治理:从连接池、线程池到熔断限流的完整排查思路
java·spring boot·后端
青风9717 分钟前
16-ADAPTRACK:基于自适应阈值的多目标跟踪匹配算法
人工智能·算法·目标跟踪
Devin~Y22 分钟前
抖音级短视频推荐与直播带货平台面试实战:从 Java 微服务到 RAG 智能客服全链路解析
java·spring boot·redis·spring cloud·kafka·agent·rag
帅次32 分钟前
Android 高级工程师面试:Java 多线程与并发 近1年高频追问 22 题
android·java·面试
要开心吖ZSH35 分钟前
Java事务与MySQL事务的关系及MVCC通俗解析
java·开发语言·mysql·mvcc
汤姆yu36 分钟前
macOS系统下Aider完整安装、配置与实战使用教程
大数据·人工智能·算法·macos·github·copilot