为什么我们需要不同的指针数据类型?

use*_*139 8 c c++ operating-system

  1. 基本上指针是一个用于存储内存地址的变量,它总是
    十六进制(内存地址),那么为什么我们需要不同的数据类型来存储地址.
  2. EX:int*a; 我们可以使用它来存储浮动地址.

Luc*_*ore 12

并非所有指针都是(必须具有)相同的大小.如果你有一个需要对齐到10 MB的大型结构,编译器可以决定它只需要8位(而不是通常的32位或64位)来存储你的变量所在的所有可能的地址.

您也不需要不同的数据类型,您可以使用void*得很好,但为什么会这样?在C++中,这是一种代码嗅觉.

还有类型安全.你知道一个int*int,这对你有利.


Bar*_*mar 6

两个原因:

  1. 在某些体系结构上,指针可能具有不同的格式,具体取决于它们指向的数据大小.例如,指针char必须能够处理单个字节,但指针int只需要能够处理4个字节的组.所以后者可以使用包含字节地址除以4的格式.

  2. 它允许编译器生成正确的程序.如果您尝试取消引用char指针并将其指定给a int,则需要知道它应该只读取源中的一个字节,并将其扩展为a的大小int.如果没有指针类型声明,它将读取比适当更多的字节.