C new的使用 迷途指標和空指標的區別

2021-08-26 20:16:01 字數 2264 閱讀 5129

參考:

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 =newint[10];// 10個未初始化int

int*pia2 =newint[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後 這樣會釋放它所指向的記憶體 並沒有把它設定為空時產生的...