【发布时间】:2019-03-14 08:44:18
【问题描述】:
我无法理解指针需要“类型说明符”的原因。在我看来,它们只是指针,因此它们的类型可能就像“ptr”,在 32 位机器中,我希望它们每个内存占用四个字节,无论它们指向什么。
当我需要检索特定变量(int 或 double 等)时,编译器会根据某个变量的类型知道它应该检索“多少”字节才能获得整体。我可能我错过了一些逻辑,并感谢您的意见。
例子:
#include "pch.h"
#include <iostream>
int main()
{
ptr *value; // Why is this ILLEGAL?
int test = 15;
value = &test;
std::cout << *value;
}
【问题讨论】:
-
那么您的模型中的
++value是什么?下一个int?下一个字节? -
-
请注意,如果允许,相同类型的指针将被允许指向一个 int 和一个
vector<double>。 -
@StoryTeller:感谢您的回复。嗯......现在我明白你的意思了。如果 value 是 int *value,则 value++ 将是 4 字节“向前”,如果是 double,则将是 8 字节向前。由于我没有考虑指针操作,所以我无法理解原因......现在我想我知道了。
-
也是语法的东西。 IIRC Rust 允许指针/引用的“声明”没有特定类型,并且在将其分配给某物时会推断出该类型。但是它不能被重新分配给不同类型的东西。所以指针/引用有一个类型,但你没有在声明时指定它。