C语言之指向一维数组的指针

您所在的位置:网站首页 三维数组怎么理解c语言 C语言之指向一维数组的指针

C语言之指向一维数组的指针

2024-07-04 11:24| 来源: 网络整理| 查看: 265

数组是一种类型吗? 所谓类型, 不过是对内存中数据的解释的约定, 我们将Jane所占的前10个字节中的内容解释为字符, 后4个字节解释为整数, 然后我们就约定约定这14个字节的类型是struct student. 数组 不是一种固定的类型, 但是我们可以将 具有5个int元素的数组 认为是一种类型, 这种类型在内存上的特点是连续存储5个整形数据. 我们自然可以位0x1000到0x1004这段内存定义一个指针.

如何解释语句 int (*arrayptr)[5] = &array? *arrayptr 表示arrayptr是一个指针;[5] 表示指针指向的对象的类型是具有五个元素的数组;int 表示该数组的元素是int类型的. array 是一个int [5] 类型的数组, 取它的地址初始化arrayptr. 值得注意的是此时数组名array不再表示数组首元素的地址.

如何通过指向数组的指针访问数组的元素?

(*arrayptr)[0] == array[0] 首先arrayptr是指向 int [5] 型数组的指针, 那么解引 *arrayptr 得到一个 int [5] 型数组, 然后自然可以通过下标访问数组的元素了. arrayptr[0][0] == array[0] 想弄清楚这个表达式要明白以下几个问题: (1) 二维数组实际上就是元素为一维数组的数组 (2) 二维数组名可以看做指向其第一个元素(一维数组)的指针 (3) 在内存中2 x 5的二维数组的存储方式是下图所示: 二维数组 (4) 一维数组array可以看做一个1 x 5的二维数组 现在我们将array看作一个只有一个元素的二维数组, 并且该二维数组的元素是 int [5] 类型的, 显然arrayptr指向了该二维数组的第一个元素(相当于二维数组名) 所以我们可以通过下标运算符 arrayptr[0] 获得二维数组的第一个元素(实际上就是array数组), 然后再次利用下标运算符 arrayptr[0][0] 获取array数组的第一个元素. 注意到无法使用 arrayptr[1]是错误的, 因为该二维数组只有一个元素. 下面的程序展示了指向一维数组的指针:


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3