控制台保持打印十六进制而不是数组中的内容

时间:2016-01-22 21:41:02

标签: c++ arrays output

我正在尝试创建一个大小为100的数组,填充0。当我打印出打印区域时:0x7fff5fbff54c。它似乎打印出该区域的地址,我不知道为什么以及如何解决这个问题,以便打印出它应该是什么。以下是我的代码。

List.hpp

typedef int ElementType;
const int MAX = 100;
class List
{
   public:
      List();
      bool Empty();
      void InsertAtEnd(ElementType x);
      void Delete(ElementType x);
      void Display();
      int Smallest();
      int Largest();
      int Range();

   private:
      int N;
      ElementType listArray[MAX];

};

List.cpp

    #include "List.hpp"
    #include <iostream>
    using namespace std;

    List::List() {

        listArray[99] = {0};
    }

    void List::Display() {

        cout << listArray;

   }

的main.cpp

    #include "List.hpp"
    #include <iostream>
    using namespace std;

    int main() {

       List list;
       list.Display();
       return 0;
    }

3 个答案:

答案 0 :(得分:2)

这是因为listArray是一个指针,你正在打印指针的地址。如果你想打印内容,你需要编写一个循环来遍历每个元素并打印值。

类似的东西:

for (int i=0; i< MAX; ++i)
{
   cout << listArray[i] << ", ";
}

cout << endl;

@πάνταῥεῖ是正确的。试试这个:

 class List
 {
    public:
       List();
       bool Empty();
       void InsertAtEnd(ElementType x);
       void Delete(ElementType x);
       void Display();
       int Smallest();
       int Largest();
       int Range();

    private:
       int N;
       ElementType listArray[MAX] = {0};

 };

从构造函数中删除初始化

答案 1 :(得分:1)

你不想要一个循环:

见上一个问题:

loop through an array in c++

答案 2 :(得分:0)

您拥有的代码

List::List() {
    listArray[99] = {0};
}

只需在索引listArray初始化99的值。

要使用所有值0初始化数组,您需要使用构造函数初始化列表:

List::List() : listArray {0} {
}