C++ 数组名作为函数参数

本文详细解析了一维数组和二维数组在C++中作为函数参数的不同传递方式,包括指针传递与数组名传递,以及针对不同维度数组的长度声明要求。重点介绍了如何理解地址结合和实参与形参的结合方式。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一维数组

参数传递方式

指针传递,但是传递的是实际参数数组首地址的副本,即实参和形参都指向数组首地址,但是是两个不同的指针,即两个指针自身在内存中不是同一个。

#include<iostream>
using namespace std;

void test(int a[]){
    cout<<"数组首地址:"<<a<<endl;
    cout<<"形式参数地址:"<<&a<<endl;
}

int main(){
    int a[] = {1,2};
    cout<<"数组首地址:"<<a<<endl;
    cout<<"形式参数地址:"<<&a<<endl;
    test(a);
}

结果

数组首地址:0x16dd232c0
形式参数地址:0x16dd232c0
数组首地址:0x16dd232c0
形式参数地址:0x16dd23288

数组名作为函数参数

第一种

类型 函数名(类型 形式参数数组名[])

第二种

类型 函数名(类型 形式参数数组名[], int 数组长度)

第三种

类型 函数名(类型 形式参数数组名[数组长度])

第四种

类型 函数名(类型* 形式参数数组名)

也就是说

  1. 形式参数可以是一个数组元素类型的指针
  2. 形式参数也可以写成声明数组的形式,并且可以指定数组长度,也可以不指定
  3. 调用函数时只需要将实际参数数组名传入即可
  4. 在函数的形参定义时,有没有长度无所谓,参数传递是以指针形式实现的,以数组名作函数参数时,实参数组与形参数组都不必定义长度,因此实参与形参的结合方式是地址结合,与数组长度无关

二维数组

数组名作为函数参数

类型 函数名(类型 形式参数数组名 [m][n])
类型 函数名(类型 形式参数数组名 [][n])
  1. 二维或多维数组作为函数参数必须声明长度,最高维度的长度可以省略
  2. 函数调用时只需要将实际参数数组名传入即可
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值