指针提供什么样的数据结构?

时间:2019-01-11 05:40:39

标签: c pointers data-structures

为什么只有指针变量可以保存任何其他变量的地址?如果我们将任何变量的地址存储在简单变量中,则其将该地址存储为值。指针变量设计什么样的数据结构?

1 个答案:

答案 0 :(得分:3)

我相信您遗漏了一点,即指针也是类型,是一个独立的指针,就像标准整数类型,浮点类型等一样。

引用C11,第§6.2.5章

  
      
  • 指针类型可以从函数类型或对象类型派生,称为   引用类型。指针类型描述了一个对象,其值提供了引用   到引用类型的实体。从引用类型T派生的指针类型   有时称为“ T的指针”。 [...]
  •   

此类型是设计的,用于保存其他类型的地址(包括指针类型本身)。就像int用于保存整数值,而doublefloat用于保存浮点值一样。指针类型不需要或没有单独的数据结构,它只是被定义为能够将地址保存为指针变量的 value

FWIW,头文件stdint.h中定义了其他类型,这些类型可以将地址保存为值:

  

以下类型指定一个带符号整数类型,该类型的任何有效属性   可以将指向void的指针转换为这种类型,然后再转换回指向void的指针,   结果将等于原始指针:

intptr_t
     

以下类型指定无符号整数类型,该类型的任何有效属性   可以将指向void的指针转换为这种类型,然后再转换回指向void的指针,   结果将等于原始指针:

uintptr_t
     

这些类型是可选的。

有关可能的用法,请参见What is the use of intptr_t?