【发布时间】:2016-07-01 09:41:59
【问题描述】:
我是 C++ 的菜鸟,我对指针感到困惑。
int 可以表示 -2147483647 到 2147483647 个值,因此总共有 4294967296 个值。
这需要32bit (2^32),因此需要4 byte。
我发现,如果我从 ptr“指针”到 int 执行 ptr+1(指针运算),它会正确移动 4 个内存地址(4 个字节)。
但是这些“4字节”都是用来表达4294967296个值的。
定义类型“指向 int”的数据存储在哪里?我猜指针本身应该知道它指向的数据类型,即它是哪种类型的指针。这些信息存储在哪里?除了指向数据的地址?如果我“打印”指针,我只会得到地址,而不是其他信息......
【问题讨论】:
-
提示:指向 int 的指针的类型是什么?看看
ptr的声明,是怎么说的? -
指针不知道,编译器知道。
-
如果您想要该指针的大小,请尝试在该指针上使用 sizeof 函数..
-
@Henrik:所以编译器会跟踪使用的每个“指针”? :O
-
@paizza 您的 C++ 代码已被编译,因此它显然会扫描您的所有代码,从而知道指针的每次使用。当代码显示
ptr+1时,它如何编译您的代码?ptr是编译器的已知变量,否则会出现未知标识符编译错误。那么ptr的类型是什么?
标签: c++ pointers memory-management