62、一维数组用于函数的参数

本文介绍了C++中指针如何表示数组,以及在一维数组作为函数参数时的处理方法。重点讲解了如何通过指针访问数组元素和注意事项,如sizeof运算符在不同情况下的使用。
摘要由CSDN通过智能技术生成

1)指针的数组表示

在C++内部,用指针来处理数组。

C++编译器把   数组名[下标]  解释为  *(数组首地址+下标)

C++编译器把   地址[下标]  解释为  *(地址+下标)

2)一维数组用于函数的参数

一维数组用于函数的参数时,只能传数组的地址,并且必须把数组长度也传进去,除非数组中有最后一个元素的标志。

书写方法有两种:

void func(int* arr, int len);

void func(int arr[], int len);

注意:

在函数中,可以用数组表示法,也可以用指针表示法。

在函数中,不要对指针名用sizeof运算符,它不是数组名。

1)指针的数组表示

在C++中,数组可以通过指针来处理。实际上,数组名在大多数情况下被视为指向数组第一个元素的指针。因此,数组的元素可以通过指针运算来访问。

示例代码:

#include <iostream>
using namespace std;

int main() {
    int numbers[5] = {10, 20, 30, 40, 50};

    // 数组名作为指针
    cout << "第一个元素: " << *numbers << endl; // 输出 10

    // 通过指针运算访问数组元素
    cout << "第三个元素: " << *(numbers + 2) << endl; // 输出 30

    return 0;
}

上面的代码展示了如何使用指针的数组表示法来访问数组元素。numbers 在没有下标的情况下被视为指向数组首元素的指针。

2)一维数组用于函数的参数

当一维数组作为函数参数时,实际上传递的是数组的首地址(即指针)。为了在函数内部正确处理数组,还需要传递数组的长度。

示例代码:

#include <iostream>
using namespace std;

// 函数声明,使用指针表示数组
void printArray(int* arr, int len) {
    for (int i = 0; i < len; i++) {
        cout << arr[i] << " ";
    }
    cout << endl;
}

// 函数声明,使用数组表示法
void modifyArray(int arr[], int len) {
    for (int i = 0; i < len; i++) {
        arr[i] += 5;  // 每个元素增加5
    }
}

int main() {
    int numbers[] = {1, 2, 3, 4, 5};
    int len = sizeof(numbers) / sizeof(numbers[0]);

    printArray(numbers, len);
    modifyArray(numbers, len);
    printArray(numbers, len);

    return 0;
}

在这个例子中,printArray 函数用于打印数组元素,而 modifyArray 函数则修改数组中的每个元素。注意,sizeof 运算符只能在定义数组的同一作用域内使用来获取数组的总大小,而不能在接收数组指针的函数中使用来确定数组长度。

注意事项

  • 在函数参数中使用 int arr[]int* arr 是等价的。
  • 传递给函数的数组实际上是通过指针进行的,所以在函数内部使用 sizeof(arr) 将不会返回数组的实际大小,而是返回指针的大小。因此,必须额外传递数组的长度或者某种形式的结束标志。

这样的处理方式确保了数组操作的灵活性和效率。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值