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] //二维数组
相关推荐
Flynt1 分钟前
Spring Boot 3开虚拟线程,我把生产服务搞崩了两次
java·spring boot
稚南城才子,乌衣巷风流3 分钟前
树的重心:概念、性质与算法详解
算法·深度优先·图论
不会就选b7 分钟前
算法日常・每日刷题--<哈希>1
算法·哈希算法
SimonKing10 分钟前
别再盲目跑测试了,用 JaCoCo 告诉你哪些代码根本没被覆盖
java·后端·程序员
zander25816 分钟前
LeetCode 207. 课程表
算法·深度优先
唐青枫16 分钟前
Java Grails 实战详解:用 Groovy 和 GORM 快速开发 Web 应用
java·groovy
SemiTris17 分钟前
Java 异常体系深度解析:从误区到精通
java
萌动的小火苗18 分钟前
深度学习中的损失函数与优化算法基础知识
人工智能·深度学习·算法
happyprince20 分钟前
02_OpenCodeReview 具体观:八种算法机制与背后的论文谱系
算法
变量未定义~23 分钟前
图论+动态规划——魔法阵
算法