【发布时间】:2018-12-28 14:25:13
【问题描述】:
我有以下问题。
既然指针保存的是内存地址的值,为什么允许加一个整数 数据类型值指向指针变量但不是双精度数据类型?
我的想法:是因为我们假设指针也是一个 int,还是因为如果我们添加一个 double 会增加它的长度?
感谢您的宝贵时间。
【问题讨论】:
-
ptr+1.1是什么意思?您无法寻址子字节。如果要向指针添加双精度,始终可以通过先将其转换为整数来实现。诚然,语言可以为你做演员,但它选择不做。 -
如果你有
const char* text = "abc",那么*(text+1) == 'b',但你期望*(text+ 1.5)是什么角色? -
向指针添加整数称为指针算法,是所有数组索引的基础。例如,对于任何数组或指针
a和索引i,表达式a[i]完全等于*(a + i)。现在,如前所述,将分数添加到指针意味着什么?您无法寻址存储单元的位或部分。 -
我认为问题是向指针添加例如 long 或 long long,假设 long/long long 有 64 位,而 int 有 32 位,而不是 float/double
-
您可以将一个整数添加到您的家庭地址并获取其他人的地址,但不是 1.3。这不奇怪吗?