1樓:
new 是申請動態儲存空間
⑴new可用來生成動態無名變數,
如 int *p=new int;
int *p=new int [10]; //動態陣列的大小可以是變數或常量;而一般直接宣告陣列時,陣列大小必須是常量
又如:int *p1;
double *p2;
p1=new int(12);
p2=new double [100];
l 分別表示動態分配了用於存放整型資料的記憶體空間,將初值12寫入該記憶體空間,並將首地址值返回指標p1;
l 動態分配了具有100個雙精度實型陣列元素的陣列,同時將各儲存區的首地址指標返回給指標變數p2;
對於生成二維及更高維的陣列,應使用多維指標。
以二維指標為例
int **p=new int* [row]; //row是二維陣列的行,p是指向一個指標陣列的指標
for(int i=0; i p[i]=new int [col]; //col是二維陣列的列,p是指向一個int陣列的指標 刪除這個二維陣列 for(int i = 0; i < row;i++) delete p[i]; //先刪除二維陣列的列 delete p; ⑵使用完動態無名變數後應該及時釋放,要用到 delete 運算子 delete p; //釋放單個變數 delete [ ] p;//釋放陣列變數(不論陣列是幾維) 相比於一般的變數宣告,使用new和delete 運算子可方便的使用變數。 2樓:夜神月 用new來建立地址是動態建立的意思。 例如:int *a=new int; 建立的時候是不在記憶體裡面佔用空間的。 a=b; 給a賦值時才開闢空間給a delete 其實就是刪除的意思。 例如:delete a; 釋放了a的記憶體,讓a所佔用的記憶體變得可用,a 不復存在 假如a已經被分配了記憶體空間, 如果給 a賦值後 即a=b; a原來的記憶體就變成懸掛的補可訪問的記憶體空間, 所以要改變a所指向的地址前,最好把a的地址先給別人,即 temp=a; 然後再賦值 a=b; 再釋放a 即delete temp; 3樓:windy笨笨狗 new() 分配這種型別的一個大小的記憶體空間,並以括號中的值來初始化這個變數; new 分配這種型別的n個大小的記憶體空間,並用預設建構函式來初始化這些變數; 在堆中應用時一般要free() 4樓:匿名使用者 自己需要申請記憶體時使用。 其他人寫的**,很多裡面的new後面沒有對應的delete。 要麼他**有誤,要麼你沒有找到地方。 c++什麼情況下需要用new
20 5樓:匿名使用者 void func() void main() void main() c++裡面, 建立物件, classname object(初始化引數);在stack棧裡面分配空間,自動釋放。 或者用 classname object=new classnam();在heap堆裡面分配空間,要手動釋放。當你不確定需要多大的時候用new 類裡面用new實現多型, 有的時候解決類 介面也用new, 這個一下說不清楚 用new有一定記憶體洩露的風險, 可以考慮用1:宣告分配記憶體是在編譯階段進行的,new分配記憶體是在執行階段進行的 2:宣告被放在棧中,new被分配在堆中或自由儲存區中 3:宣告建立陣列,在編譯階段是就為他分配記憶體。 new建立在執行階段 需要建立時就建立,不需要建立時還可以在執行時選擇陣列長度, 這就是因為int i;cin>>i;int a[i];不成功的原因,因為a[i]要在編譯階段就分配好記憶體,但是i在執行時才能知道 int i;cin>>i;int * a=new int[i];這樣可以,因為都是在執行階段才進行。 c++中new的用法 6樓:老表有點呈 c++中new運算子用於動態分配和撤銷記憶體的運算子。 1、開闢單變數地址空間 new int; //開闢一個存放陣列的儲存空間,返回一個指向該儲存空間的地址.int *a = new int 即為將一個int型別的地址賦值給整型指標a. 2)int *a = new int(5) 作用同上,但是同時將整數賦值為5。 2、開闢陣列空間 要訪問new所開闢的結構體空間,無法直接通過變數名進行,只能通過賦值的指標進行訪問。用new可以動態開闢,撤銷地址空間。在程式設計序時,若用完一個變數,下次需要再用,可以在每次開始使用時開闢一個空間,在用完後撤銷它。 7樓:手機使用者 new int;//開闢一個存放整數的儲存空間,返回一個指向該儲存空間的地址(即指標) new int(100);//開闢一個存放整數的空間,並指定該整數的初值為100,返回一個指向該儲存空間的地址 new char[10];//開闢一個存放字元陣列(包括10個元素)的空間,返回首元素的地址 new int[5][4];//開闢一個存放二維整型陣列(大小為5*4)的空間,返回首元素的地址 float *p=new float (3.14159);//開闢一個存放單精度數的空間,並指定該實數的初值為//3.14159,將返回的該空間的地址賦給指標變數p new運算子使用的一般格式為 new 型別 [初值] 用new分配陣列空間時不能指定初值。如果由於記憶體不足等原因而無法正常分配空間,則new會返回一個空指標null,使用者可以根據該指標的值判斷分配空間是否成功。 delete運算子使用的一般格式為 delete [ ] 指標變數 例如要撤銷上面用new開闢的存放單精度數的空間(上面第5個例子),應該用 delete p; 前面用「new char[10];」開闢的字元陣列空間,如果把new返回的指標賦給了指標變數pt,則應該用以下形式的delete運算子撤銷該空間: delete pt;//在指標變數前面加一對方括號,表示是對陣列空間的操作 例 開闢空間以存放一個結構體變數。 #include #include using namespace std; struct student //宣告結構體型別student ;int main( ) 執行結果為 wang fun 10123 m 8樓:幸運夕夕 c++中new的用法有三種,具體如下: 一、new operator,也叫new表示式;new表示式比較常見,也最常用,例如: 上面這個new表示式完成了兩件事情:申請記憶體和初始化物件。 二、operator new,也叫new操作符。這兩個英文名稱起的也太絕了,很容易搞混,那就記中文名稱吧。new操作符類似於c語 言中的malloc,只是負責申請記憶體,例如: 注意: 這裡多了一個operator。這是new的第二個用法,也算比較常見吧。 三、placement new,它用於在給定的記憶體中初始化物件,也就是說你手中已有一塊閒置的記憶體,例如: 那麼現在buffer是你所擁有閒置記憶體的指標buffer = new(buffer) string("abc"); //呼叫了placement new,在buffer所指向的記憶體中初始化string型別的物件,初始值是"abc",事實上,placement new也是new表示式的一種,但是比普通的new表示式多了一個引數,當然完成的操作和返回值也不同。 因此上面new的第一種用法可以分解兩個 動作,分別為後面的兩種用法。 注意:1、使用者是無法主動呼叫建構函式的,所以需要藉助placement new,但是使用者可以主動呼叫解構函式,所以用完這些物件後,呼叫解構函式,然後用對應分配記憶體的方法去釋放記憶體。 2、事實上malloc並不一定比operatornew節省多少時間,用placement new常常是為了考慮效能,所以會配合記憶體池一起使用。 9樓:匿名使用者 new的功能是動態分配記憶體。 語法就是 new 型別名t(初值列表) 10樓: new 的作用是動態開闢空間,一般的形式估計你也會了。我就直接給你講題吧 你這個函式的作用是動態建立一個(n1+1)*(n2+1)的二維陣列(注:在c++中 直接用new(a)這種形式是錯誤的) 首先明白所謂指標就是存放地址的變數,這一點最重要double **a=new double*[n1+1]; 這句話的意思是開闢以一塊連續的空間用來儲存指標變數(指標的指標),它的大小是n1+1。*a是指標,那麼**a就是存放指標的指標。那個new後的double* 相當於一個強制轉換。 因為用new時和陣列的名字無關所以[n1+1]前的陣列名可以省略。這個類比於new double[3]; for(i=0;i<=n1;i++) 這個語句就是給把指標付給指標的指標,看下邊的圖你就明白了; 多琢磨一下! 11樓:有界函式 推薦你看一下effictive c++,這裡面有單獨的一節是講 new 的。細緻的講不了,可以自己去看看。 c++中new是什麼意思 12樓:隨便什麼名啦啦 c++中new運算子用於動態分配和撤銷記憶體的運算子。 new運算子使用的一般格式為new 型別 [初值]。 用new分配陣列空間時不能指定初值。如果由於記憶體不足等原因而無法正常分配空間,則new會返回一個空指標null,使用者可以根據該指標的值判斷分配空間是否成功。 一般來說,使用new申請空間時,是從系統的「堆」(heap)中分配空間。申請所得的空間的位置時根據當時的記憶體的實際使用情況決定的。但是,在某些特殊情況下,可能需要在程式設計師指定的特定記憶體建立物件,這就是所謂的「定位放置new」(placement new)操作。 13樓:帷幕 動態申請記憶體空間,那句話的意思就是申請一個大小與str字串常量大小相同的字元陣列。c++中new出來的要用delete刪除。 14樓:匿名使用者 new一般表示建立一個類的物件(例項),返回該類物件的指標。 假設我們有class c{}; 要建立一個c類的物件(例項),主要有兩種方式。一個是用 c obj; 直接定義。這種方式定義的物件記憶體是在棧上(靜態記憶體)分配的。 另一種方式是定義一個類的指標然後用new來建立該物件並返回需要的指標地址。這種方式是用 c* obj = new c(); 此方式分配的記憶體是在堆上。 堆和棧的區別請參考: 另外,new c()會呼叫c類的無參建構函式。通過new c(...)傳入不同的引數可以呼叫對應的c的建構函式。 結腸鏡是消化內科中的常見檢查方法之一,主要用於對原因不明的結腸疾病 慢性腹瀉等明確診斷,或用於結腸息肉切除或結腸術後複查。纖維結腸鏡的適應症為 1 便血與大便潛血原因待查 2 排便異常,如慢性腹瀉或長期進行性便祕 3 x 線鋇劑灌腸檢查結果陰性,但有明顯的腸道症狀,疑有惡變者,或x線鋇劑檢查異常,但... 一般納稅人按照簡易計稅方法計稅的,除出租或者 不動產以外,按照3 徵收率計算應納增值稅額。可以開具3 的增值稅發票,包括增值稅專用發票和增值稅普通發票。發票開具的最高金額,要看國稅局給企業設定的最高開票限額。比如稅局設定的最高開票限額是100萬元,則每張發票金額最高不能達到100萬元,即最高可以開具... 背景是藍色的,小時候用的是紅色的,大了就用藍色的了 什麼是大一寸相片?大一寸相片是指畫面實際大小為3.2x4.5cm.一般去影樓拍的都會稍大點 其實正規的大一寸使用的時候只是3.2x4cm邊角直徑4mm圓角 您的這張相片不是大一寸相片。一寸 背景應該是什麼顏色的?有要求嗎 有個要求紅的 有個要求藍的...一般什麼情況下需要做腸鏡呢,什麼情況下需要做腸鏡?
一般納稅人什麼情況下開專用發票,什麼情況下開普通發票
一般是什麼情況下使用一寸的相片,一般紅底的一寸照片都拿來幹什麼用