MST
星途 面试题库

面试题:C语言多维数组名特性基础考查

在C语言中,定义一个二维数组 `int arr[3][4];`,请阐述 `arr`、`*arr` 以及 `arr[0]` 之间在内存地址和数据含义上的区别。
16.8万 热度难度
编程语言C

知识考点

AI 面试

面试题答案

一键面试
  1. 内存地址
    • arr:代表整个二维数组的首地址,其值等于 &arr[0][0],即二维数组第一个元素的地址。它是一个指向包含4个 int 类型元素的数组的指针。
    • *arr:等同于 arr[0],它是二维数组第一行的首地址,也就是 &arr[0][0],它是一个指向 int 类型的指针。
    • arr[0]:是二维数组第一行的首地址,同样为 &arr[0][0],是一个指向 int 类型的指针。
  2. 数据含义
    • arr:从数据结构角度看,它代表整个二维数组,可看作是由3个包含4个 int 类型元素的一维数组组成的二维数组。
    • *arr:它代表二维数组第一行的数组名,由于数组名在表达式中会被转换为指针,所以它指向第一行第一个元素 arr[0][0],可操作第一行的元素。
    • arr[0]:与 *arr 类似,它代表二维数组第一行的数组名,在表达式中转换为指向 arr[0][0] 的指针,用于操作第一行的元素。