面试题答案
一键面试常见问题
- 未初始化指针:如果数组中的指针没有正确初始化就进行间接访问,会导致未定义行为。例如:
int *ptr_array[5];
// 这里ptr_array中的指针未初始化
int value = *ptr_array[0]; // 未定义行为
- 指针越界:访问数组范围外的指针同样会导致未定义行为。假设数组定义为
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个整数变量num1
到num5
,然后初始化指针数组ptr_array
,使其每个元素分别指向这些整数变量。通过循环,使用间接访问操作符*
获取每个指针所指向的整数值并打印出来。