C++ 如何在数组中存储奇数并使用指针表示法访问它们?

C++ How to store odd numbers in an array and access them using a pointer notation?

我发现书上的解法有错误,下面的解法是使用指针表示法按要求访问数组,但打印出来的结果不是奇数,而是打印1到50和50-1。

原始说明:编写一个程序,声明并初始化一个数组,其中包含前 50 个奇数(非偶数)。使用指针符号将数组 10 中的数字输出到一行,然后以相反的顺序输出它们,也使用指针符号。

下面附上书中错误的解决方法,感谢您的帮助:

// Storing odd numbers in an array and accessing them using pointer notation


#include <iostream>
#include <iomanip>

int main()
{
  const size_t n {50};
  size_t odds[n];
  for (size_t i {}; i < n; ++i)
    odds[i] = i + 1;

  const size_t perline {10};
  std::cout << "The numbers are:\n";
  for (size_t i {}; i < n; ++i)
  {
    std::cout << std::setw(5) << *(odds + i);
    if ((i + 1) % perline == 0)                        
      std::cout << std::endl;
  }

  std::cout << "\nIn reverse order the numbers are:\n";
  for (int i {n - 1}; i >= 0; --i)                    
  {                                                    
    std::cout << std::setw(5) << *(odds + i);
    if (i % perline == 0)
      std::cout << std::endl;
  }
}

随便写

for (size_t i = 0; i < n; ++i)
{
    odds[i] = 2 * i + 1;
}

最后一个循环使用 size_t 类型的变量 i 重写,如

for ( size_t i = n; i != 0; --i )                    
{                                                    
    std::cout << std::setw(5) << *(odds + i - 1 );
    if (i % perline == 0)
        std::cout << std::endl;
}

或喜欢

for ( size_t i = n; i-- != 0; )                    
{                                                    
    std::cout << std::setw(5) << *(odds + i );
    if (i % perline == 0)
        std::cout << std::endl;
}