首页 > 软件开发 > C语言 >

通过指针访问数组元素的各种方法

来源:互联网 2023-03-16 19:08:38 152

指针提供一种以符号形式使用地址的方法,因为它以更接近机器的方式表达,所以使用指针的程序更有效率。尤其是,指针能有效地处理数组。实际上,数组表示法其实是在变相地使用指针。在这篇经验中,我将以C语言为例展示指针访问数组元素的方法。8gk办公区 - 实用经验教程分享!

通过指针访问数组元素的各种方法8gk办公区 - 实用经验教程分享!

工具/原料

  • 编辑器
  • 编译器
  • 电脑

方法/步骤

  • 1

    先从最基本的概念开始。8gk办公区 - 实用经验教程分享!

    &是地址运算符。当它后面是一个变量名时,&给出该变量的地址。8gk办公区 - 实用经验教程分享!

    *是间接或解引用运算符。当它后面是一个指针时,*给出储存在指针指向地址中的值。8gk办公区 - 实用经验教程分享!

    数组名是数组首元素的地址。也就是说,如果 flizny 是一个数组,下面的语句成立:8gk办公区 - 实用经验教程分享!

    flizny == &flizny[0]; 8gk办公区 - 实用经验教程分享!

    另外,需要注意C语言运算符的优先级。间接运算符(*)的优先级高于 ,如果dates是个数组名,则* dates 2相当于( * dates) 2:8gk办公区 - 实用经验教程分享!

    * (dates 2) // dates 第 3 个元素的值8gk办公区 - 实用经验教程分享!

    * dates 2 // dates 第 1 个元素的值加 28gk办公区 - 实用经验教程分享!

    通过指针访问数组元素的各种方法8gk办公区 - 实用经验教程分享!

  • 2

    先以这段程序为例。注意指针加上一个数时,它的值发生了什么变化(代码中的转换说明%p会以十六进制显示指针的值)。8gk办公区 - 实用经验教程分享!

    通过指针访问数组元素的各种方法8gk办公区 - 实用经验教程分享!

  • 3

    这是它的输出。经过分析可以得出,我的电脑中,地址按字节编址,short类型占用2字节,double类型占用 8 字节。在C语言中,指针加1指的是增加一个存储单元。对数组而言,这意味着加1后的地址是下一个元素的地址,而不是下一个字节的地址。8gk办公区 - 实用经验教程分享!

    通过指针访问数组元素的各种方法8gk办公区 - 实用经验教程分享!

  • 4

    然后再提升难度,开始探讨多维数组。增加数组维数会增加指针的复杂度。以这段程序为例:8gk办公区 - 实用经验教程分享!

    通过指针访问数组元素的各种方法8gk办公区 - 实用经验教程分享!

  • 4相关内容未经许可获取自百度经验
  • 5

    这是上面代码的运行结果。因为zippo和zippo[0]都开始于同一个地址,所以的值相同。结果显示出zippo[0]是一个占用一个int大小对象的地址,而 zippo 是一个占用两个int大小对象的地址。因为zippo[0]是该数组首元素(zippo[0][0])的地址,所以* (zippo[0])表示储存在zippo[0][0]上的值(即一个int类型的值)。与此类似,* zippo代表该数组首元素(zippo[0])的值,而zippo[0]是个地址。该值的地址是&zippo[0][0],即* zippo就是&zippo[0][0]。** zippo与* &zippo[0][0]等价,这相当于zippo[0][0]。简而言之,zippo是地址的地址,必须解引用两次才能获得原始值。8gk办公区 - 实用经验教程分享!

    通过指针访问数组元素的各种方法8gk办公区 - 实用经验教程分享!

  • 6

    zippo:二维数组首元素的地址(每个元素都是内含两个int类型元素的一维数组)8gk办公区 - 实用经验教程分享!

    zippo 2:二维数组的第3个元素(即一维数组)的地址8gk办公区 - 实用经验教程分享!

    * (zippo 2):二维数组的第3个元素(即一维数组)的首元素(一个int类型的值)地址8gk办公区 - 实用经验教程分享!

    * (zippo 2) 1:二维数组的第3个元素(即一维数组)的第2个元素(也是一个int类型的值)地址8gk办公区 - 实用经验教程分享!

    * ( * (zippo 2) 1):二维数组的第3个一维数组元素的第2个int类型元素的值,即数组的第3行第2列的值(zippo[2][1])8gk办公区 - 实用经验教程分享!

    下图更直观地演示了数组地址、数组内容和指针之间的关系。8gk办公区 - 实用经验教程分享!

    通过指针访问数组元素的各种方法8gk办公区 - 实用经验教程分享!

  • 注意事项

    • 注意运算优先级。
    • 代码应当尽可能清晰易读。

    以上方法由办公区教程网编辑摘抄自百度经验可供大家参考!8gk办公区 - 实用经验教程分享!


    标签: 编程语言C语言编程

    办公区 Copyright © 2016-2023 www.bgqu.net. Some Rights Reserved. 备案号:湘ICP备2020019561号统计代码