【C++】数组? or 指针?

数组与指针

【前提】C++ 将数组名解释为一个指针,指向数组的第一个元素的地址;array1 == &array1[0]两者等价。

  • 1、当某个函数调用数组时:

    • 函数声明中形参可以是数组名,但实际函数传递的是地址;
    • 当且仅当用于函数头定义 或 函数声明中,数组的名 int arr [] 和指针定义 int *arr含义才是相同的,都意味着 arr 是一个 int 指针。其他地方两者的含义并不相同。
    • 综上,到了函数定义体中就不能使用 int arr1[] 来声明一个指针;
  • 2、将指针(数组名也是指针)加 1,实际是加了一个与指针指向类型的长度相等的值;理解下述等式:

    • arr[i] == *(arr + i)
    • &arr[i] == arr + i
  • 3、将数组地址作为参数传入函数,可以

    • 节省复制整个数组所需的资源,降低开销;
    • 降低对原始数据破坏的风险;(毕竟只是传递了数组的起始地址、元素类型和个数等信息)

本人才疏学浅,上述有错误请各位指正!

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值