面试题答案
一键面试指针数组和数组指针的区别
- 指针数组:
- 本质是一个数组,数组的每个元素都是指针类型。
- 定义示例:
int *ptr_array[5];
,这里定义了一个名为ptr_array
的指针数组,它有5个元素,每个元素都是指向int
类型的指针。 - 实际应用场景:常用于管理一组指针,例如在处理多个字符串时,可以用指针数组来存储每个字符串的首地址。如:
#include <stdio.h>
#include <string.h>
int main() {
char *strings[3] = {"apple", "banana", "cherry"};
for (int i = 0; i < 3; i++) {
printf("%s\n", strings[i]);
}
return 0;
}
- 数组指针:
- 本质是一个指针,它指向一个数组。
- 定义示例:
int (*ptr)[5];
,这里定义了一个名为ptr
的指针,它指向一个包含5个int
类型元素的数组。 - 实际应用场景:常用于二维数组的处理,在传递二维数组参数时,用数组指针可以更方便地操作二维数组的结构。如:
#include <stdio.h>
void print_array(int (*arr)[3], int rows) {
for (int i = 0; i < rows; i++) {
for (int j = 0; j < 3; j++) {
printf("%d ", arr[i][j]);
}
printf("\n");
}
}
int main() {
int two_dim_array[2][3] = {{1, 2, 3}, {4, 5, 6}};
print_array(two_dim_array, 2);
return 0;
}
总结来说,指针数组是数组,元素为指针;数组指针是指针,指向数组,在应用场景上,指针数组适合管理多个离散的指针数据,数组指针适合处理二维数组等有特定结构的数组数据。