一些指针– Part 2

在本系列的第一部分中,详细研究了什么是指针以及如何声明指针的基础。现在是时候检查指针在处理稍微复杂的变量(例如数组和结构)时如何工作了。与整个数据集相比,在应用程序周围传递内存位置要高效得多。

 

数组提供了一种独特的行为,使它们能够从变量衰减到指针。当从数组中删除[]运算符时,将发生数组衰减。结果是一个指向数组起始位置的指针。例如,可以声明一个三元素数组,如下所示:

 

 

数组中的值14可能会分配给位置0x100,值28会分配给0x102,依此类推。为了访问数组的元素,请使用简单符号array [0]访问数组的第一个元素,然后使用array [ 1]用于下一个元素,依此类推。如果有一个函数将使用数组数据,则该函数的定义和使用方式如下所示:

 

 

以这种形式,将数组第一个元素的地址传递给函数(0x100)。可以使用其他符号来访问阵列的另一部分。例如,可以使用以下表示法将array(0x102)中第二个元素的地址传递给函数

 

 

这是通过地址(&)的第二个元素([1])的数组。重要的是要记住这些不同的方法来访问数组,但也要注意该表示法与指针表示法的相似程度。相似之处是’也只是一种方法。尚未讨论的有趣的指针表示法之一是使用数组表示法访问指针变量。例如,可以将指针声明为指向数组,如下所示

 

 

指针可用于访问数组的第二个元素,如下所示

 

 

在这种情况下,[]用作取消引用地址的方法。这种表示法使指针看起来很像正在索引的数组。如果在intPtr [1]之前使用了*符号,则编译器将引发错误。

 

指向结构的指针是C语言中的常见用法。结构通常用于将相似数据分组在一起,从而允许通过结构变量访问成员变量。在以后的文章中,将使用结构来定义驱动程序中外围设备的配置元素。因此,了解如何使用指针访问结构至关重要。可以将指针声明为结构,就像其他任何变量一样,如下所示

 

 

根据以前使用指针的经验,可以使用标准表示法访问指针,例如结构的size成员,如下所示

 

 

在这种情况下为符号。用于访问config结构的size成员。尽管这是可以接受的,但是通过使用指向成员的指针运算符,还有一种更好的方法来访问size成员->。这样,代码变得更容易阅读,如下所示

 

 

从这些观察中,可以说一般使用*,->,和[]运算符用于平衡或访问&操作员。它们都充当操作符,以解除对指针的引用,并访问其中存储的数据。既然读者已经对指针和与之相关的各种运算符有了基本的了解,那么下一篇文章将研究指针数组。指针数组将用作将内存映射到设备外围设备的基本方法。

发表评论

您的电子邮件地址不会被公开。 必需的地方已做标记 *

该网站使用Akismet减少垃圾邮件。 了解如何处理您的评论数据.