指针与数组作为函数参数其各自的特点有哪些

C++指针与数组作为函数参数其各自的特点有哪些?指针与数组作为函数参数其各自的特点有哪些?

不知道你这个问题是否已经解决, 如果还没有解决的话:
  • 你可以看下这个问题的回答https://ask.csdn.net/questions/7675824
  • 这篇博客也不错, 你可以看下(C++)编写一个判别素数的函数,在主函数输入一个整数,输出是否为素数的信息
  • 除此之外, 这篇博客: 算法总结:双指针算法(什么时候该使用、如何使用)中的 一:从一个C++语言程序开始 部分也许能够解决你的问题, 你可以仔细阅读以下内容或者直接跳转源博客中阅读:

    给你 n 个非负整数 a1,a2,…,an,每个数代表坐标中的一个点 (i, ai) 。在坐标内画 n 条垂直线,垂直线 i 的两个端点分别为 (i, ai) 和 (i, 0) 。找出其中的两条线,使得它们与 x 轴共同构成的容器可以容纳最多的水。

    示例:
    在这里插入图片描述

    输入:[1,8,6,2,5,4,8,3,7]
    输出:49
    解释:图中垂直线代表输入数组 [1,8,6,2,5,4,8,3,7]。在此情况下,容器能够容纳水(表示为蓝色部分)的最大值为 49。

    注意:
    n = height.length
    2 <= n <= 3 * 104
    0 <= height[i] <= 3 * 104

  • 您还可以看一下 林男老师的小学生c++趣味编程入门视频教程 少儿C十十信息学奥赛竞赛网课课程中的 双重循环的应用——图形窍门小节, 巩固相关知识点
  • 以下回答来自chatgpt:

    C++中指针和数组作为函数参数的特点:

    指针作为函数参数:

    优点:

    1.指针作为函数参数,可以直接修改实参的值,有利于实现代码重用。

    2.传递指针相比传递数组,可以减少空间复制的开销,提高程序的运行效率。

    缺点:

    1.传递指针相比传递数组,代码可读性差。

    2.指针可能悬空,容易出现空指针和非法指针等问题。

    在何种情况下应该选择指针作为函数参数:

    1.如果函数需要修改实参的值,则应该使用指针。

    2.如果函数需要传递一个复杂的结构体、类的对象,一般都是通过指针来访问这个对象的。

    3.如果数组的大小不是固定的,并且需要操作数组的长度,那么使用指针可以更方便地实现。

    数组作为函数参数:

    优点:

    1.数组作为函数参数,因为数组本身就是指针,与指针一样可以直接修改实参的值,有利于实现代码重用。

    2.传递数组相比传递指针,代码可读性较好。

    缺点:

    1.传递数组相比传递指针,空间复制的开销较大,可能会影响程序的运行效率。

    2.无法通过数组名得到数组长度,必须额外传递数组长度。

    在何种情况下应该选择数组作为函数参数:

    1.如果数组的大小是固定的,并且只需要对数组进行读取操作,那么使用数组作为函数参数比较方便。

    2.如果数组的大小是固定的,需要对数组进行修改操作,那么使用指针作为函数参数比较方便。

    附加内容:参考资料中的代码是关于在一个升序数组中查找给定目标值的下边界和上边界的问题,使用了二分查找法和双指针方法,可以作为对指针和数组作为函数参数的实际应用的参考。代码中的二分查找法是用递归实现的,需要注意二分查找法方法1和方法2的区别。


如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^

本质上是一样的,因为对于函数参数,数组会退化成指针。