c++ - “一个指针指向某对象,同时另一个指针指向另外对象的下一地址,两个指针可能相等”是怎么回事?
高洛峰
高洛峰 2017-04-17 13:48:47
0
3
843

《C++ Primer》第五版,中文版。p50。
需要注意的是,一个指针指向某对象,同时另一个指针指向另外对象的下一地址,此时也有可能出现这两个指针值相同的情况,即指针相等。

之前在 CSDN 问答上问的:http://ask.csdn.net/questions/256146
“另外对象的下一地址”指的是不是尾后迭代器?
有人提到是相邻的导致相等。是否是下面的代码表达的意思:

#include  #include  using namespace std; int a[] = { 1,2 }; int i = 4; int main() { int *p = end(a); if (p == &i) cout << "equ" << endl; return 0; }
高洛峰
高洛峰

拥有18年软件开发和IT教学经验。曾任多家上市公司技术总监、架构师、项目经理、高级软件工程师等职务。 网络人气名人讲师,...

répondre à tous (3)
巴扎黑

对于你的题目,描述的意思不知道理解是否有误。看下面这个图

这里很简单,是可能相等的。当对象C和对象B是一个对象,那就相等了。
借你代码一用

#include  #include  using namespace std; int a[] = { 1,2 }; int main() { int* p1 = &a[1]; //指针p1指向对象a[1] int* p2 = &a[0] + 1; //指针p2指向对象a[0]的下一个 if(p1 == p2){ cout<<"p1("<
    PHPzhong

    a-b-c-d-....
    p1=b;
    p2=a->next;

    p1==p2

      大家讲道理

      因为内存是连续的,档指针p遍历完数组后,其实它已经指向数组后面的一块内存地址。而后面的一块内存地址,刚好是i的地址。 所以他们刚好相等. 我想下面2张图,会解决你的疑惑:

      自己好好算算内存地址, 一个整数4个字节。 是不是刚好对应上了

        Derniers téléchargements
        Plus>
        effets Web
        Code source du site Web
        Matériel du site Web
        Modèle frontal
        À propos de nous Clause de non-responsabilité Sitemap
        Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!