【发布时间】:2019-01-23 10:36:20
【问题描述】:
我对指针的了解是,它用于指向特定的位置(内存地址),那么为什么我们甚至需要指针的数据类型与我们试图指向的变量的数据类型相同。 假设我创建了一个整数变量,那么我必须创建一个指向整数的指针来指向它。那么为什么我不能创建一个 void 指针或浮点指针来指向存储在该整数变量中的值! 我错过了一些指针的概念吗?
【问题讨论】:
-
float和integer具有不同的表示形式,因此需要 w.r.t 的类型。到指针。您可以有一个 void 指针,但您必须在取消引用之前将指针转换为正确的指针类型。使用 void 指针,您不知道值代表什么 -
除非你能从指针的类型中分辨出来,否则你怎么知道指针指向什么?我怀疑您总体上缺少类型的要点。
-
阅读动态类型语言与静态类型语言。 C 和 C++ 属于后者。
-
只保留类型信息。如果你把你的类型扔掉(void*),没有人知道指针指向什么。你可以看到它指向哪个地址,但是编译器不知道你指向的是什么类型的数据。
-
C++ 是一种强类型语言。如果你想要一个指向某个东西的指针,你通常需要一个该类型的指针来指向它。