0

我有一个指向数组的指针,为什么它会给我以下输出?

int main() {
    int b[] = {1, 2};
    cout << "size of int = " << sizeof(int) << endl;
    int *pt = b;
    int i = 0;
    while( i++ < 2) {
        cout << "pt = " << pt << ", b = " << b << endl;
        cout << pt - b << endl;
        (pt)++;
        }
    return 0;
}

代码输出:

size of int = 4
pt = 0x7fff576f0c2c, b = 0x7fff576f0c2c
0
pt = 0x7fff576f0c30, b = 0x7fff576f0c2c
1

pt 最初是指向数组 b 开头的指针,为什么 pt-b 给了我 pt 指向的数组的索引,而不是数组的索引乘以一个元素的大小。

4

2 回答 2

-1

请记住,最后,指针是普通的旧整数,它代表逻辑空间中的地址。在这里,地址b指向保持不变,同时pt被移位。

于 2013-04-29T16:42:55.930 回答
-1

这是因为您的数组实际上是一个地址,并且int *pt = b;基本上ptb

您的输出只是打印pt自您将其设置为以来增加的次数b

于 2013-04-29T16:39:34.333 回答