减去整数数组的索引的结果[重复]

Posted

技术标签:

【中文标题】减去整数数组的索引的结果[重复]【英文标题】:Result of subtracting indexes of an integer array [duplicate] 【发布时间】:2021-04-23 05:39:54 【问题描述】:

我目前正在学习 C++,我对这段代码感到困惑:

    int array[10];
    int* p1 = &array[3];
    int* p2 = &array[7];
    cout<<"p2-p1=" << p2 - p1 <<endl;

我认为结果会是 16,因为整数数组的一个元素是 4 字节大小,但编译器说 p2-p1=4。数组指针之间的减法是否忽略了字节的大小?

【问题讨论】:

正确:指针算法使用底层类型的大小。使用指针算法来计算数组中 元素 的数量比计算字节数要有用得多。如果需要字节,您可以随时将指针转换为 const char* 所有指针运算都是在“元素”而不是“字节”中完成的。 int* p1 = &amp;array[3]int* p1 = array + 3 相同。也许这样会更清楚。 类型控制指针运算。所以int *p; 其中p + 1 是内存中的下一个int 【参考方案1】:

它不会忽略字节的大小,但指针知道指向对象的大小。所以 4 字节如果它是一个整数,8 字节对于双精度,...。这甚至适用于您自己的结构的数组。我刚刚添加了一张图片,以可视化它的外观。

【讨论】:

(好图...) 我不知道这是不是讽刺,但我只是用excel“画”了它:D 不,其实我是很认真的,一张图真的值1000字。 啊是的我知道,当我学习 C/C++ 和所有指针的东西时,我总是画出我刚刚写的东西来理解我的代码:D

以上是关于减去整数数组的索引的结果[重复]的主要内容,如果未能解决你的问题,请参考以下文章

Unity数组,获取当前索引-x或+x [重复]

从整数类型的数组中取出索引子集[重复]

python面试题- 二分法查找给定一个已排序的非重复整数数组和一个目标值,如果找到目标,则返回索引。

在 Django 模板中减去 2 个整数 [重复]

循环结果数组的最后一个索引[重复]

减去以下两个包含整数的地址返回 1 而不是预期的 4 [重复]