c 中new返回的是什麼,C 中new的用法

時間 2021-09-12 00:09:21

1樓:匿名使用者

不是返回啦,又不是函式,這裡是動態建立。前面的建立的是位址(指標),後者建立的是指標所指向的內容。

2樓:小豬八

返回的是指標,

&在這裡是引用,比如說int &my=0;

=號後面的是具體的物件,而不是指標。

而我們使用指標的時候: int qq=12;

int * aa=&qq;

qq=*aa的,

故而point &p = * new point; * 指標,就是最終的物件,而不再是指標了。。

3樓:億說電腦

new返回的是所分配空間的首位址

4樓:小奧黑莓派

返回的是分配空間的首位址

5樓:文藝七月

point *p=new point;new返回的是指標,p為指標,指向point型別;用new point表示新建乙個point型別變數,將變數位址賦給p。 point &p=*new point;這裡&表示引用,不是取位址符號,所以p為point型別變數;而*是取內容符,new point為指標,而*取指標指向的內容,故等號右邊也是變數,相當於a=3;int &b=a;這樣

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的建構函式。

15樓:匿名使用者

在堆疊上動態建立乙個儲存空間

c++中的new函式怎麼用?

16樓:匿名使用者

1.new的作用是從自由儲存為 類 的物件或物件陣列分配記憶體,並將已適當分類的非零指標返回到物件。

比如:char * pchar= new char[10];

delete pchar;

例子中動態分配了10個char型別的記憶體給了pchar,來構成乙個陣列。需要注意的是,分配陣列採用 ,如果只是單個的只要new char就可以了。

2.注意事項:

(1)使用 delete 運算子可解除分配使用 new 運算子分配的記憶體。而且new和delete是成對出現的。只出現乙個是錯誤的或不規範的寫法,即使能編譯通過,也會有安全隱患,可能會造成記憶體洩露;

(2)使用的new與delete要相同。也就是說如果你在 new表示式中使用了 ,你必須在對應的 delete 表示式中使用 。如果你在 new 表示式中沒有使用 ,你也不必在對應的 delete 表示式中使用 。

(3)使用 new 為 c++ 類物件分配記憶體時,將在分配記憶體後呼叫物件的建構函式。所以如果是自己寫的類的話,最好自己寫個建構函式,這樣會比較好。

3.擴充套件資料參見

17樓:

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++)

a[i]=new double[n2+1];

這個語句就是給把指標付給指標的指標,看下邊的圖你就明白了;

多琢磨一下!

C 中的用法,C 中new的用法

除了樓上說的 還有 引用 和 取地址 的含義int a int b a 上述兩行語句執行完之後,a b表示同一個變數,對其中一個的操作相當於對另一個的操作 int a int b a 則b中儲存的是a的地址。對 b 的任何操作相當於對a的操作。 朱古力兜 表示引用,就是物件的另一個名字,例如 int...

c中new和delete的用法

肥仙女 在c 程式設計中,使用new分配的陣列可用delete釋放。這裡釋放的是動態分配的陣列空間,而不是靜態分配的陣列空間,詳細步驟 1 例如,我們動態建立了一個一維int陣列arr,現在需要將它釋放。2 這時只需要使用delete陣列名即可。3 注意,要釋放陣列所佔的記憶體,不能少。否則,用de...

c中new和override的區別

如果你用override,則無論呼叫的是a類還是b類中的test 系統都會找到它實質類的test 如果是用的new,則可以通過型別轉換呼叫到基類的test 下面是override的情況 a a new a b b new b a a1 new b a.test 呼叫a中test b.test 呼叫b...