MST

星途 面试题库

面试题:C++数组传参指针操作的基础应用

编写一个C++函数,该函数接收一个整数数组和数组的大小作为参数。在函数内部,通过指针操作,将数组中的每个元素翻倍,并返回修改后的数组首地址。请解释你代码中指针操作的原理。
17.3万 热度难度
编程语言C++

知识考点

AI 面试

面试题答案

一键面试
#include <iostream>

int* doubleArray(int arr[], int size) {
    int* ptr = arr;
    for (int i = 0; i < size; ++i) {
        *ptr *= 2;
        ++ptr;
    }
    return arr;
}

指针操作原理:

  1. int* ptr = arr;:这里将指针ptr指向数组arr的首地址。在C++中,数组名在很多情况下会隐式转换为指向数组首元素的指针,所以arr&arr[0]是等价的,这里ptr就获得了数组的起始地址。
  2. *ptr *= 2;*ptr表示指针ptr所指向的内存地址中的值,这里将该值翻倍。
  3. ++ptr;:使指针ptr指向下一个元素的内存地址。由于ptrint*类型,每次++ptrptr的地址值会增加一个int类型的大小(通常在32位和64位系统中int占4字节),从而指向下一个数组元素。
  4. 循环结束后,数组所有元素都已翻倍,最后返回数组首地址arr,因为arr在函数调用过程中始终指向数组起始位置,数组的修改也会体现在原数组上。