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] //二维数组
相关推荐
白狐_79829 分钟前
408数据结构第8章:排序②——性质对比秒杀、场景选择与外部排序
java·数据结构·算法
zander2581 小时前
LeetCode 84:柱状图中的最大矩形——单调栈如何确定左右边界
java·数据结构·算法
码匠许师傅1 小时前
【C++ 面试真题】聊聊 C++ 的拷贝构造与拷贝赋值
java·c++·面试
Shell运维手记1 小时前
Linux 常用基础命令学习笔记
linux·运维·笔记·学习·算法·github
杨航 AI1 小时前
O(n log n):线性对数原理拆解 这个是排序算法的黄金复杂度之一。
算法·排序算法
船厂电气自动化ai大模型2 小时前
AI大模型与数学 第32课 函数凹凸性与二阶导数:拐点求解、凹凸区间计算(10道二阶导数计算题)
数据结构·人工智能·python·深度学习·算法
旖旎夜光2 小时前
LeetCode 3:无重复字符的最长子串(滑动窗口) —— 题解
数据结构·c++·算法·leetcode·滑动窗口
极创信息3 小时前
系统安全隐患全方位排查方案:标准化渗透测试全流程
java·opencv·struts·数据挖掘·eclipse·语音识别·hibernate
汉字萌萌哒3 小时前
2019CCF-CSP入门级C++试题解析
java·开发语言·c++
叠层归一研究院3 小时前
AGI 系统(十一):二阶网络 — 二阶递归 × 多主体 (元符号网络)
开发语言·人工智能·算法·php·agi