MST

星途 面试题库

面试题:C语言指针常量在数组中的应用

假设有一个整型数组 `int arr[5] = {1, 2, 3, 4, 5};`,定义一个指针常量指向该数组的首元素,并通过该指针常量实现对数组元素的遍历和求和操作。另外,阐述这种情况下指针常量与普通指针在操作数组时的区别。
43.5万 热度难度
编程语言C

知识考点

AI 面试

面试题答案

一键面试
#include <iostream>

int main() {
    int arr[5] = {1, 2, 3, 4, 5};
    // 定义指针常量指向数组首元素
    int * const ptr = arr; 
    int sum = 0;

    // 通过指针常量遍历数组并求和
    for (int i = 0; i < 5; ++i) {
        sum += *(ptr + i);
    }

    std::cout << "数组元素的和为: " << sum << std::endl;
    return 0;
}

指针常量与普通指针在操作数组时的区别

  1. 指针常量
    • 指针常量一旦初始化后,其指向就不能再改变。例如上述代码中int * const ptr = arr;ptr始终指向arr数组的首元素,后续不能再让ptr指向其他地址。
    • 可以通过指针常量来访问和修改其所指向数组的元素,如*(ptr + i)这种方式访问并可修改元素值。
  2. 普通指针
    • 普通指针的指向可以随意改变。例如int *ptr; ptr = &arr[0];,之后可以通过ptr = &arr[1]; 等方式改变指针的指向。
    • 同样可以通过普通指针访问和修改其所指向数组的元素。普通指针在灵活性上更强,适用于需要动态改变指向的场景,而指针常量适用于需要固定指向某个数组首地址,防止误操作改变指针指向的场景。