2016-01-22 102 views
-1

我试图创建一个大小为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; 
    } 
+0

它好像你来自Python编程其中'打印(listArray)'会然而打印整个数组在C++中,你不能这样做,并且需要编写一个访问每个元素的循环。 – JackVanier

+0

你正在打印一个指针值,所以这是预期的。 –

+0

我改变了它,所以它使用for循环,现在它打印0 0 0 0 0 0 0 1606416136 32767 1606422582 @πάνταῥεῖ – Krae

回答

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}; 

}; 

而且从构造函数中删除初始化

+0

现在它打印0 0 0 0 0 0 0 1606416136 32767 1606422582 @Rob – Krae

0

代码你有

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

刚刚在索引99处初始化您的listArray的值。

要初始化的所有值的数组作为0你需要使用构造函数初始化列表:

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