MST

星途 面试题库

面试题:C语言指针数组与数组指针

请解释C语言中指针数组和数组指针的区别,并给出它们的定义示例以及在实际应用场景中的不同用法。
26.2万 热度难度
编程语言C

知识考点

AI 面试

面试题答案

一键面试

指针数组和数组指针的区别

  1. 指针数组
    • 本质是一个数组,数组的每个元素都是指针类型。
    • 定义示例: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;
}
  1. 数组指针
    • 本质是一个指针,它指向一个数组。
    • 定义示例: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;
}

总结来说,指针数组是数组,元素为指针;数组指针是指针,指向数组,在应用场景上,指针数组适合管理多个离散的指针数据,数组指针适合处理二维数组等有特定结构的数组数据。