2016-01-22 41 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} { 
}