我的主要問題是:C++ for循環,多維數組和指針運動
有沒有更好的(或更有效)的方法來聲明使用指針多維數組?我在正確的軌道上完成了我所做的事情嗎?
編程練習:
你賣的書C++傻瓜。使用一個二維數組來存儲三年的月銷售額(以書籍數量而非金錢數量計)。報告合併年份的總銷售額。程序應該使用循環來按月提示你,使用一組字符串對象,初始化爲月份字符串並將輸入數據存儲在二維數組中。然後,程序應該查找數組內容的總和並報告3年的總銷售額。
這是我的代碼SNIPPET:
/* Global constants */
const unsigned int YRS = 3;
const unsigned int MNTHS = 12;
/* Create 2D-Array */
int** bookSalesArrayPtr = new int*[YRS]; // Pointer-to-Array-of-Pointers
for (unsigned int i = 0; i < YRS; ++i) // Each element of bookSalesArrayPtr
bookSalesArrayPtr[i] = new int[MNTHS]; // In each element create new array[12]
這裏是我的完整源代碼的鏈接:http://ideone.com/LcQeuj
據我所知,我可以使用任何函數(全局)之外聲明的二維數組,並消除指針的需要。除了全局聲明的方式外,還有我在代碼中的做法:還有其他方法嗎?我參加了結構化編程課程簡介(不是全面的OOP課程)。初學者編程。 – nodebase
您可以將數組聲明爲全局數組,並且可以消除這些指針。但是這些東西沒有任何關係,你們可以同時做,也可以不做。你選擇的方式是使用指針的典型方式。對我而言,唯一的另一種方式是將第二維分配爲YRS * MNTHS整數的一種分配,而不是YRS分配的MNTHS整數。 – john
@john:你的意思是創建一個大塊,而不是官方的二維數組?我這樣做,它的工作,但我的教授特別想要一個二維數組,所以我不得不找到一個不同的解決方案。謝謝你,約翰。 – nodebase