MST

星途 面试题库

面试题:C语言指针与数组:预防越界错误

在C语言中,假设有一个数组`int arr[5] = {1, 2, 3, 4, 5};`,现在有一个指针`int *ptr = arr;`。请编写一段代码,使用指针遍历数组,但要确保不会出现数组越界错误,并说明在实际编程中,通常有哪些方法可以预防此类错误。
40.1万 热度难度
编程语言C

知识考点

AI 面试

面试题答案

一键面试
#include <stdio.h>

int main() {
    int arr[5] = {1, 2, 3, 4, 5};
    int *ptr = arr;
    int length = sizeof(arr) / sizeof(arr[0]);

    for (int i = 0; i < length; i++) {
        printf("%d ", *(ptr + i));
    }
    printf("\n");

    return 0;
}

在实际编程中,预防数组越界错误的方法通常有:

  • 明确数组边界:在定义数组时,明确知道数组的大小,并在遍历或操作数组时使用该大小作为边界条件,如上述代码中使用sizeof(arr) / sizeof(arr[0])获取数组大小。
  • 使用安全的库函数:例如,在字符串操作中,使用strncpy代替strcpystrncpy可以指定复制的最大字符数,防止越界。
  • 边界检查:在访问数组元素的地方添加边界检查逻辑,如在函数中对传入的数组索引进行判断,若越界则返回错误或进行适当处理。