生活 >

        news_new|天天觀速訊

        時間:2023-06-23 06:59:47       來源:萬能網

        news,new這個很多人還不知道,現在讓我們一起來看看吧!


        【資料圖】

        1、開辟單變量地址空間new int; //開辟一個存放數組的存儲空間,返回一個指向該存儲空間的地址.int *a = new int 即為將一個int類型的地址賦值給整型指針a. 2)int *a = new int(5) 作用同上,但是同時將整數賦值為5。

        2、2、開辟數組空間要訪問new所開辟的結構體空間,無法直接通過變量名進行,只能通過賦值的指針進行訪問。

        3、用new可以動態開辟,撤銷地址空間。

        4、在編程序時,若用完一個變量,下次需要再用,可以在每次開始使用時開辟一個空間,在用完后撤銷它。

        5、擴展資料:定位放置new的作用:在 C++ 中,通過 new 運算符來實現動態內存分配。

        6、new操作符從自由存儲區(free store)上為對象動態分配內存空間,凡是通過new操作符進行內存申請,該內存即為自由存儲區。

        7、2、new操作符內存分配成功時,返回的是對象類型的指針,類型嚴格與對象匹配,無須進行類型轉換,故new是符合類型安全性的操作符。

        8、3、new內存分配失敗時,會拋出bac_alloc異常,它不會返回NULL;malloc分配內存失敗時返回NULL。

        9、參考資料來源:百度百科-定位放置new "1.new()分配這種類型的1個大小的內存空間,并以括號中的值來初始化這個變量;2.new[]分配這種類型的n個大小的內存空間,并用默認構造函數來初始化這類變量;#include#includeusingnamespacestd;intmain(){//char*p=newchar("Hello");//error分配1個char(1字節)的空間,//用"Hello"來初始化,這明顯不對char*p=newchar[6];//p="Hello";//不能將字符串直接賦值給該字符指針p,原因是://指針p指向的是字符串的第1個字符,只可以用下邊的//strcpystrcpy(p,"Hello");cout<<*p<

        10、例如:int*p1=newint[10];返回的是1個指向int的指針int*int(*p2)[10]=newint[2][10];new了1個二維數組,去掉最左邊那一維[2],剩下int[10],因此返回的是1個指向int[10]這種一維數組的指針int(*)[10].int(*p3)[2][10]=newint[5][2][10];new了1個三維數組,去掉最左邊那一維[5],還有int[2][10],因此返回的是1個指向二維數組int[2][10]這種類型的指針int(*)[2][10].#include#includeusingnamespacestd;intmain(){int*a=newint[34];int*b=newint[];int(*c)[2]=newint[34][2];int(*d)[2]=newint[][2];int(*e)[2][3]=newint[34][2][3];int(*f)[2][3]=newint[][2][3];a[0]=1;b[0]=1;//運行時錯誤,無分配的內存,b只起指針的作用,用來指向相應的數據c[0][0]=1;d[0][0]=1;//運行時錯誤,無分配的內存,d只起指針的作用,用來指向相應的數據e[0][0][0]=1;f[0][0][0]=1;//運行時錯誤,無分配的內存,f只起指針的作用,用來指向相應的數據cout<

        11、這2個英文名稱起的也太絕了,很容易搞混,那就記中文名稱吧。

        12、new表達式比較常見,也最常用,例如:string*ps=newstring("abc");上邊這個new表達式完成了兩件事情:申請內存和初始化對象。

        13、new操作符類似于C語言中的malloc,只是負責申請內存,例如:void*buffer=operatornew(sizeof(string));注意這里多了1個operator。

        14、這是new的第二個用法,也算比較常見吧。

        15、那么第三個用法就不很常見了,官方的說法是placementnew,它用于在給定的內存中初始化對象,也就是說你手中已有一塊閑置的內存,例如:void*buffer=operatornew(sizeof(string));//那么目前buffer是你所擁有閑置內存的指針buffer=new(buffer)string("abc");//調出使用了placementnew,在buffer所指向的內存中初始化string類型的對象,初始值是"abc"事實上,placementnew也是new表達式的一種,可是比普通的new表達式多了1個參數,當然完成的操作和返回值也不一樣。

        16、因此上邊new的第一種用法可以分解2個動作,分別為后面的兩種用法。

        17、"1. new() 分配這種類型的一個大小的內存空間,并以括號中的值來初始化這個變量;2. new[] 分配這種類型的n個大小的內存空間,并用默認構造函數來初始化這些變量;#include#includeusing namespace std;int main(){//char* p=new char("Hello");//error分配一個char(1字節)的空間,//用"Hello"來初始化,這明顯不對char* p=new char[6];//p="Hello";//不能將字符串直接賦值給該字符指針p,原因是://指針p指向的是字符串的第一個字符,只能用下面的//strcpystrcpy(p,"Hello");cout<<*p<

        18、例如:int *p1 = new int[10];返回的是一個指向int的指針int*int (*p2)[10] = new int[2][10];new了一個二維數組, 去掉最左邊那一維[2], 剩下int[10], 所以返回的是一個指向int[10]這種一維數組的指針int (*)[10].int (*p3)[2][10] = new int[5][2][10]; new了一個三維數組, 去掉最左邊那一維[5], 還有int[2][10], 所以返回的是一個指向二維數組int[2][10]這種類型的指針int (*)[2][10].#include#include using namespace std;int main() {int *a = new int[34];int *b = new int[];int (*c)[2] = newint[34][2];int (*d)[2] = new int[][2];int (*e)[2][3] = new int[34][2][3];int (*f)[2][3] = new int[][2][3];a[0] = 1;b[0] = 1; //運行時錯誤,無分配的內存,b只起指針的作用,用來指向相應的數據c[0][0] = 1;d[0][0] = 1;//運行時錯誤,無分配的內存,d只起指針的作用,用來指向相應的數據e[0][0][0] = 1;f[0][0][0] = 1;//運行時錯誤,無分配的內存,f只起指針的作用,用來指向相應的數據cout<

        19、這兩個英文名稱起的也太絕了,很容易搞混,那就記中文名稱吧。

        20、new表達式比較常見,也最常用,例如:string* ps = new string("abc");上面這個new表達式完成了兩件事情:申請內存和初始化對象。

        21、new操作符類似于C語言中的malloc,只是負責申請內存,例如:void* buffer = operator new(sizeof(string));注意這里多了一個operator。

        22、這是new的第二個用法,也算比較常見吧。

        23、那么第三個用法就不很常見了,官方的說法是placement new,它用于在給定的內存中初始化對象,也就是說你手中已有一塊閑置的內存,例如:void* buffer = operator new(sizeof(string));//那么現在buffer是你所擁有閑置內存的指針buffer = new(buffer) string("abc"); //調用了placement new,在buffer所指向的內存中初始化string類型的對象,初始值是"abc"事實上,placement new也是new表達式的一種,但是比普通的new表達式多了一個參數,當然完成的操作和返回值也不同。

        24、因此上面new的第一種用法可以分解兩個動作,分別為后面的兩種用法。

        本文到此分享完畢,希望對大家有所幫助。

        關鍵詞:

        首頁
        頻道
        底部
        頂部
        欧美日韩亚洲精品| 久久久久国产亚洲AV麻豆| 亚洲AV伊人久久青青草原| 亚洲精品456人成在线| 亚洲午夜一区二区电影院| 亚洲美免无码中文字幕在线| 久久久久亚洲AV无码麻豆| 亚洲精品线在线观看| 久久久久亚洲av无码专区| 亚洲国产第一页www| 91精品国产亚洲爽啪在线观看| 亚洲综合久久综合激情久久| 97se亚洲综合在线| 亚洲国产成人精品无码区在线网站| 亚洲国产日韩在线一区| 激情内射亚洲一区二区三区爱妻| 亚洲一区二区三区在线网站| 精品久久亚洲中文无码| 亚洲色精品三区二区一区| 亚洲精品理论电影在线观看| 男人的天堂av亚洲一区2区| 另类图片亚洲校园小说区| 亚洲精品视频在线看| 亚洲中文字幕无码日韩| 亚洲av伊人久久综合密臀性色 | 亚洲Av综合色区无码专区桃色| 久久精品亚洲综合| 亚洲经典在线观看| 亚洲五月丁香综合视频| 亚洲精品无码人妻无码| www.亚洲一区| 在线a亚洲v天堂网2019无码| 亚洲AV无码专区电影在线观看| 久久久久亚洲AV片无码下载蜜桃| 亚洲电影在线播放| 亚洲色偷偷色噜噜狠狠99网| 亚洲国产91精品无码专区| 亚洲精品午夜无码专区| 亚洲综合久久综合激情久久| 国产精品亚洲综合五月天| 色婷婷亚洲一区二区三区|