誰能給幾個C new的用法的例子

2021-08-16 03:08:06 字數 5221 閱讀 7745

1樓:

int *p = new int; //此時指標p指向一個int物件,該物件沒有被初始化

int *p = new int(0); //指標p指向一個int物件,該物件被初始化為0

int *p = new int[10]; //指標p指向一個int型陣列,該陣列未被初始化

int *p = new int[10](0); //指標p指向一個int型陣列,該陣列的元素都被初始化為0

new就是在程式的堆區申請一個沒有命名的空間,你可以把new看成是一個系統內建的函式,該函式返回一個指向沒有命名的空間地址(也就是指標).

另外,對於new申請的空間,程式設計師必須顯示的刪除該記憶體空間,用delete刪除,比如這樣,delete p,和delete p,前者是刪除單個物件,後者是刪除一個陣列

2樓:匿名使用者

int *p,*q;

student *r;

p=new int; //申請分配一個int型別的記憶體空間(4個位元組)

p=new int(10); //申請分配一個int型別的記憶體空間,同事將該記憶體空間中放置值10

q=new int[100]; //申請分配100個int型別的記憶體空間(400個位元組)

r=new student; //申請分配一個student型別的記憶體空間(sizeof(student)個位元組)

3樓:聖經守恆定律

int* p = new int;

int* pa = new int[0];

4樓:汐日南莘

#include

using namespace std;

int main()

c++中new的用法

5樓:老表有點呈

c++中new運算子用於動態分配和撤銷記憶體的運算子。

1、開闢單變數地址空間

new int;  //開闢一個存放陣列的儲存空間,返回一個指向該儲存空間的地址.int *a = new int 即為將一個int型別的地址賦值給整型指標a. 2)int *a = new int(5) 作用同上,但是同時將整數賦值為5。

2、開闢陣列空間

要訪問new所開闢的結構體空間,無法直接通過變數名進行,只能通過賦值的指標進行訪問。用new可以動態開闢,撤銷地址空間。在程式設計序時,若用完一個變數,下次需要再用,可以在每次開始使用時開闢一個空間,在用完後撤銷它。

6樓:手機使用者

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

7樓:幸運夕夕

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常常是為了考慮效能,所以會配合記憶體池一起使用。

8樓:匿名使用者

new的功能是動態分配記憶體。

語法就是 new 型別名t(初值列表)

9樓:

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

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

多琢磨一下!

10樓:有界函式

推薦你看一下effictive c++,這裡面有單獨的一節是講 new 的。細緻的講不了,可以自己去看看。

c++裡,new是幹什麼用的,具體的用法是什麼?

11樓:夢中睡客

開闢記憶體空間存貯變數,比如int *p=new int

12樓:匿名使用者

申請記憶體。例如

char*psz=new char[128];

sprintf(psz,"%f", 1200/7.);

messagebox(0,psz,0,0);

13樓:匿名使用者

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 運算子可方便的使用變數。

c++怎麼用new建立類物件?

14樓:

你是在類b的內部建立類a的物件麼?

那非常簡單,在類b的內部寫(private還是public塊都行,專根據具體情況

屬)a a;

或者a *a = new a();

當然前提是a的建構函式是無參的,如果有引數要寫上實參如果是說你的類b繼承了類a(即類b是類a的派生類),你想用new建立上轉型物件,就成了

a *a = new b();

15樓:匿名使用者

假設bai類名字為 t 使用語法 :t* object = new t(), 其中du

括號裡可以填寫類zhi初始化dao

的引數, 得到的 object 是一個版t型別的指標,別權忘了用delet object 釋放記憶體。

當c++程式用new 分配記憶體的時候,會比c的malloc 做一些額外的工作,尤其是使得類裡面使用的std標準庫型別的變數的到合適的初始化。此外,如果有自己編寫的記憶體管理器,new 還有一個變種: t* object = new (manager) t(), 如果需要, 請參考:

誰能給我幾個單機遊戲,誰能給我推薦幾個單機遊戲

鬼武者3 鬼泣3 雖然沒有鬼泣4的畫質好,但也很爽。刀鋒騎士 自己看 http www.pcgames.com.cn pcgames game tian 0504 621457.html 伊蘇 起源 大了點,但是個傑作 東方緋想天 格鬥 混亂軍團,原來玩得,ps移植的,很爽快,好像800多兆。三國志...

誰能給我幾個笑話,誰能給我講幾個笑話了

一位女子,開出徵婚條件有兩點 1.要帥 2.要有車 電腦去幫她搜尋 結果 象棋 這位女子,不服搜出的結果又輸入 1.要有漂亮的房子 2.要有很多錢 電腦去幫她再次搜尋的結果 銀行 此女子仍然不失望,繼續輸入條件 1要長得酷 2又要有安全感 結果搜出的結果是 奧特曼 此女子仍然不失望,還繼續輸入條件 ...

誰能給我幾個笑話,誰能給我幾個笑話和腦筋急轉彎?越多越好!

2009年最佳網路超短 某市重點工程完工後尚有餘款百餘萬,市委常委會的常委們開會,討論這筆款子到底是用來改善小學的條件好呢還是改善監獄條件,開始分歧很大。分管教育的常委強調的是照顧 花朵 分管政法的常委卻提醒要有利於改造 害蟲 爭來爭去沒法統一。一直未發言的市委書記最後提問 同志們,大家是否認為 這...