MST

星途 面试题库

面试题:C语言间接访问操作符在指针数组中的注意事项

假设有一个指针数组`int *ptr_array[5];`,并且对其进行了初始化。请说明在使用间接访问操作符(`*`)来访问指针数组所指向的元素时,可能会遇到哪些常见问题,并举例说明如何正确使用间接访问操作符获取数组中每个指针所指向的整数值。
47.3万 热度难度
编程语言C

知识考点

AI 面试

面试题答案

一键面试

常见问题

  1. 未初始化指针:如果数组中的指针没有正确初始化就进行间接访问,会导致未定义行为。例如:
int *ptr_array[5];
// 这里ptr_array中的指针未初始化
int value = *ptr_array[0]; // 未定义行为
  1. 指针越界:访问数组范围外的指针同样会导致未定义行为。假设数组定义为int *ptr_array[5];,访问ptr_array[5]就是越界:
int *ptr_array[5];
// 假设ptr_array已经正确初始化
int value = *ptr_array[5]; // 越界,未定义行为

正确使用示例

#include <stdio.h>

int main() {
    int num1 = 10, num2 = 20, num3 = 30, num4 = 40, num5 = 50;
    int *ptr_array[5] = {&num1, &num2, &num3, &num4, &num5};

    for (int i = 0; i < 5; i++) {
        int value = *ptr_array[i];
        printf("The value at ptr_array[%d] is: %d\n", i, value);
    }

    return 0;
}

在上述示例中,先定义了5个整数变量num1num5,然后初始化指针数组ptr_array,使其每个元素分别指向这些整数变量。通过循环,使用间接访问操作符*获取每个指针所指向的整数值并打印出来。