MST

星途 面试题库

面试题:C语言数组与指针在数据遍历中的应用

假设有一个整数数组int arr[10] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10}; 请分别使用数组下标法和指针法实现对数组元素的遍历并打印,同时说明这两种方法在实现过程中的差异。
30.9万 热度难度
编程语言C

知识考点

AI 面试

面试题答案

一键面试

数组下标法

#include <stdio.h>

int main() {
    int arr[10] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
    for (int i = 0; i < 10; i++) {
        printf("%d ", arr[i]);
    }
    printf("\n");
    return 0;
}

指针法

#include <stdio.h>

int main() {
    int arr[10] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
    int *ptr = arr;
    for (int i = 0; i < 10; i++) {
        printf("%d ", *(ptr + i));
    }
    printf("\n");
    return 0;
}

差异

  1. 可读性
    • 数组下标法:直观易懂,通过数组名和下标直接访问元素,符合人们对数组的常规认知,如arr[i],一眼就能看出是访问数组arr的第i个元素。
    • 指针法:相对复杂,使用指针的偏移来访问元素,如*(ptr + i),需要对指针运算有较好的理解才能清晰看出是在访问数组元素。
  2. 执行效率
    • 在现代优化编译器下,两者的执行效率几乎相同。编译器通常会对这两种方式进行优化,将数组下标访问转换为类似指针的偏移访问。不过在早期编译器中,数组下标法可能会稍慢,因为下标法需要进行越界检查(虽然C语言本身不强制,但一些安全库可能会做),而指针法直接基于地址偏移。
  3. 灵活性
    • 数组下标法:只能按照数组的固定顺序访问元素,灵活性较差。
    • 指针法:指针可以灵活地进行移动和运算,比如通过改变指针的指向,实现对数组部分元素的跳跃式访问,或者对多个数组进行关联访问等操作,灵活性更高。