參考:
1.new 分配這種型別的n個大小的記憶體空間,並用預設建構函式來初始化這些變數;
例子:#include
#include
using namespace std;
int main(){
char * p=new char("hello");
//error分配乙個char(1位元組)的空間,
//用"hello"來初始化,這明顯不對
char* p=new char[6];
//p="hello";
//不能將字串直接賦值給該字元指標p,原因是:
//指標p指向的是字串的第乙個字元,只能用下面的
//strcpy
strcpy(p,"hello");
cout<
1)new int; //開闢乙個存放陣列的儲存空間,返回乙個指向該儲存空間的位址.int *a = new int 即為將乙個int型別的位址賦值給整型指標a.
2)int *a = new int(5) 作用同上,但是同時將整數賦值為5
3.開闢陣列空間
一維:int *a = new int[100];開闢乙個大小為100的整型陣列空間
二維:int **a = new int[5][6]
三維及其以上:依此類推.
一般用法: new 型別 [初值]
注意:對於內建型別而言,new僅僅是分配記憶體,除非後面顯示加(),相當於呼叫它的建構函式,對於自定義型別而言,只要一呼叫new,那麼編譯器不僅僅給它分配記憶體,還呼叫它的預設建構函式初始化,即使後面沒有加() /*此處摘抄於大佬*/
new(多個物件)陣列
new分配的物件,不管單個物件還是多個物件的分配,都是預設初始化。但可以對陣列進行值初始化,方法就是:在大小之後新增一對空括號。
int
*pia =
new
int
[
10
];
// 10個未初始化int
int
*pia2 =
new
int
[
10
]();
// 10個值初始化為0的int
4.new運算子
最常用的是作為運算子的new,比如:
string *str = new string(「test new」);
作為運算子,new和sizeof一樣,是c 內建的,你不能對它做任何的改變,除了使用它。
new會在堆上分配一塊記憶體,並會自動呼叫類的建構函式。
5.delete用法:
1. int *a = new int;
delete a; //釋放單個int的空間
2.int *a = new int[5];
delete a; //釋放int陣列空間
要訪問new所開闢的結構體空間,無法直接通過變數名進行,只能通過賦值的指標進行訪問.
用new和delete可以動態開闢,撤銷位址空間.在程式設計序時,若用完乙個變數(一般是暫時儲存的陣列),下次需要再用,但卻又想省去重新初始化的功夫,可以在每次開始使用時開闢乙個空間,在用完後撤銷它.
迷途執政和空指標的區別
關於迷途指標的一道綜合題目
迷途指標的產生
本題目的解釋如下:
空指標和迷途指標的區別
解釋 include int main int pint new int pint 10 cout pint delete pint pint 0 pint 20 oh no,this was deleled.cout pint 迷途指標也叫懸浮指標,失控指標,是對乙個指標delete後 這樣會釋放...
C new與delete以及空指標
1 指標的new操作 void main 輸出為 0x00431bf0 4分別為分配的空間位址和位址內存放的值。如果寫為 void main 輸出為 4 程式的意思就是將0x00431bf0記憶體位址開始的4個byte的塊取出轉換為int型別輸出,即直接讀取記憶體。2 指標的delete操作 指標在...
c 野指標(迷途指標)的理解
date 2018.12.16 直接上程式 include using namespace std int main int pint new int pint 10 cout pint迷途指標也叫懸浮指標,失控指標,是對乙個指標delete後 這樣會釋放它所指向的記憶體 並沒有把它設定為空時產生的...