C++ 函数传递数组的方法

博客介绍了使用数组作为函数传递参数的相关知识,指出传递的是数组首个元素的物理地址而非数组值,指向该地址的变量是指针变量,定义函数时要用定义指针的格式,并提及调用函数的格式。

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

使用数组作为函数传递参数

数组作为函数参数,传递的是数组第一个元素所在位置的物理地址,而不是数组的值

指向这个地址的变量就叫做指针变量

在定义函数的时候,要使用定义指针的格式

int add_a(int *a, int l)
{
    int i, sum = 0;
    for( i=0; i<l; i++)
        sum += a[i]; 
    return sum;
}

调用函数时的格式(a为数组名,l 为数组长度)

	add_a(a, l);

.

.

.

### C++函数参数传递数组的方式 在C++中,可以通过多种方式将数组作为参数传递函数。以下是几种常见的方式: #### 使用指针传递数组 当把数组名作为参数传递函数时,实际上传递的是指向数组第一个元素的指针。 ```cpp #include <iostream> using namespace std; void display(int *m) { cout << "显示分数:" << endl; for (int i = 0; i < 5; ++i) { cout << "Student" << i + 1 << ": " << m[i] << endl; } } int main() { int marks[5] = {87, 78, 90, 89, 67}; display(marks); return 0; } ``` 这种方式下,`display` 函数接收一个 `int*` 类型的参数,代表数组的第一个元素的位置[^2]。 #### 显式指定数组长度 为了提高代码的安全性和可读性,在定义函数时可以增加一个额外的参数来指示数组的实际大小。这有助于防止越界访问等问题的发生。 ```cpp #include <iostream> void print(const int ia[], size_t size) { for (size_t i = 0; i != size; ++i) { std::cout << ia[i] << std::endl; } } int main() { const int scores[]{87, 78, 90, 89, 67}; print(scores, sizeof(scores)/sizeof(*scores)); return 0; } ``` 这里,`print` 接收两个参数:一个是常量整数类型的指针 `ia[]` 或者说是 `const int* ia`;另一个是指定数组尺寸的无符号整形变量 `size`[^1]。 #### 利用模板实现通用化处理 如果希望编写的函数能够适应不同长度的一维或多维数组,则可以考虑采用模板技术。这样做的好处是可以让同一个函数适用于各种数据结构而无需重复编写相似逻辑。 ```cpp template<typename T, size_t N> void show(T (&arr)[N]) { for(auto& elem : arr){ std::cout<<elem<<"\n"; } } int main(){ double data[]={3.14 ,2.718 ,1.618 }; show(data); return 0 ; } ``` 此段代码展示了如何利用模板特性创建一个名为 `show` 的泛型打印函数,它可以操作任意固定大小的同质集合(即所有成员具有相同的数据类型)。注意这里的语法糖——使用了引用绑定 (`T(&arr)[N]`) 来确保传入的对象不会被复制,并且可以直接获取其实际规模 `N`[^3]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值