2011-08-01 69 views
0
// rememb-o-matic 
#include <iostream> 
#include <new> 
using namespace std; 

int main() 

{ 
    int i,n; 
    int * p; 
    cout << "How many numbers would you like to type? "; 
    cin >> i; 
    p= new (nothrow) int [i]; 
    if (p == 0) 
    cout << "Error: memory could not be allocated"; 
    else 
    { 
    for (n=0; n<i; n++) 
    { 
     cout << "Enter number: "; 
     cin >> p[n]; 
    } 
    cout << "You have entered: "; 
    for (n=0; n<i; n++) 
     cout << p[n] << ", "; 
    delete[] p; 
    } 
    return 0; 
} 

現在,研究員C++程序員需要一些幫助

爲什麼他們的支架裝在變量i?

p= new (nothrow) int [i]; 

爲什麼他們2所for陳述又是什麼一個for聲明做什麼呢?

爲什麼它會刪除[] p而不是變量p

+10

如果你需要詢問有關循環,那麼你可能應該[在C++上閱讀一本好書](http://stackoverflow.com/questions/388242/the-definitive-c-book-guide-and-list )。而這段代碼很糟糕。 –

+1

也許一本介紹C++的書會是一個好的開始?在這裏有一個很好的建議清單。 –

回答

5

他們爲什麼把括號括在變量i中? &
爲什麼它刪除[] p而不是變量p?

p= new (nothrow) int [i]; 

動態分配一個int陣列i元件。

delete []p; 

刪除動態分配的數組。動態分配的用C


基本規則++是:

  • 如果使用new動態分配內存,使用delete釋放它。
  • 如果您使用new []動態分配內存,請使用delete []取消分配它。

另外請注意,您正在使用nothrow版本new運營商,它基本上返回null如果一些錯誤條件並沒有拋出異常,這使得C++代碼必須與傳統兼容內存分配後使用空檢查的c代碼(malloc在失敗時返回null)。


請問一個for聲明做什麼呢?

一種說法是條件循環構建,這將繼續執行循環,直到該condition仍是如此。 for循環的基本語法是:

for(;condition;) 
{ 
    //doSomething 
} 

爲什麼他們2發言?
代碼中的第一個for loop從用戶處獲取輸入。它需要輸入i次。

第二個for loop打印出數組的內容。


建議你拿起good C++ book,並通過基本看明白了。

2

delete []意味着您將數組釋放回系統,if語句的無括號是可選的,並且意味着第一行將被執行(如果爲true),我認爲您確實需要學習一些基本知識在C + +和一般編程,得到一本好書或谷歌教程有很多好的那裏

2

這只是C++語法。

  1. new int [i]意味着我們要分配內存來我店整數。
  2. delete [] p刪除內存綁定到頁。如果省略了[],則編譯器假定p指向*p類型的單個實例。如果指令包含[],編譯器會嘗試刪除元素數組。