C++函数参数为数组时的问题,复制还是指针?

众所周知,函数在传参数时会复制参数,但传指针时,只是复制了指针本身,而没有复制指针指向的值,所以可以通过传指针或引用来使函数内可以修改外部的值。那么,对于数组,会怎样?

上测试程序

#include<iostream>
#include<typeinfo>
using namespace std;

void func(int arr[]){
    arr[0]=1;
    
    cout<<"type of arr in func : "<<typeid(arr).name()<<endl;
    cout<<"address of arr in func : "<<arr<<endl;
}

int main(){
    int arr[10];
    arr[0]=0;
    
    func(arr);
    
    cout<<arr[0]<<endl;
    cout<<"type of arr outside : "<<typeid(arr).name()<<endl;
    cout<<"address of arr outside : "<<arr<<endl;
    return 0;
}

这段程序定义了一个参数为int数组并修改了这个数组索引为0处的值为1的函数,在主函数中调用了它,并打印相关的信息。

输出:

type of arr in func : Pi
address of arr in func : 0x7ffd09a12cb0
1
type of arr outside : A10_i
address of arr outside : 0x7ffd09a12cb0

按回车键返回

从输出可以看出,在主函数中,arr的类型为A10_i,即大小为10的 int 数组;而在func函数中,arr的类型为Pi,即 int 指针。这说明了,在函数传参数时,将数组转化为了对应的指针。arr的首地址都是0x7ffd09a12cb0,并且func函数中修改的arr[0]的值成功的影响到了主函数中的arr,这也说明了,函数参数传数组时并没有复制数组,而是传了数组首地址对应的指针。

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值