gpt4 book ai didi

c++用指针反向打印数组内容 - 为什么这种方法有效?

转载 作者:行者123 更新时间:2023-11-30 00:47:17 30 4
gpt4 key购买 nike

来自 C++ Early Objects - Gaddis,第 8 版。我在 SO 上注意到了类似的问题,但没有一个能回答这方面的问题。考虑这个简单的程序:

// This program uses a pointer to display
// the contents of an array.
#include <iostream>
using std::cout;

int main(){
const int SIZE = 8;
int set[ ] = {5, 10, 15, 20, 25, 30, 35, 40};
int *numPtr; // Pointer

// Make numPtr point to the set array.
numPtr = set;

// Use the pointer to display the array elements
cout << "The numbers in set are:\n";
for (int index = 0; index < SIZE; index++) {
cout << *numPtr << " ";
numPtr++;
}

// Display the array elements in reverse order
cout << "\nThe numbers in set backwards are:\n";
for (int index = 0; index < SIZE; index++) {
numPtr--;
cout << *numPtr << " ";
}
return 0;
}

有效,我测试过了!但从概念上讲,numPtr 指向数组“set”的起始地址,那么从起始地址“向后”递增 numPtr 如何不会在第二个(反向)for 循环的第一次迭代中导致段错误?重申这个问题,numPtr 如何“知道”从数组“set”的最后一个元素的地址开始?温柔一点,我正在学习 CS II 的介绍...谢谢!

最佳答案

在第二个循环开始时,您的 numPtr 指向 set 的最后一个元素后面,因为您在第一个循环中增加了它。

如果没有第一个循环,它将失败。

关于c++用指针反向打印数组内容 - 为什么这种方法有效?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35394739/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com