1樓:金色潛鳥
int *p=new int(2);
這裡的 int(2) 是呼叫構建函式,引數值是2。
意思是 宣告 p 是 整型指標,動態分配 sizeof(int) 位元組儲存區給它,初始化為 2。
於是,語句裡可以用 *p, p[0], delete p;
-------
int *p=new int[2](2);
語法錯,不可以對陣列作初始化。
只可以 int *p=new int[2];
-------
「int *p=new int;的意思應該是申請一個不指定大小的整形空間,」
不是的。意思應當是 宣告 p 是 整型指標,動態分配 sizeof(int) 位元組儲存區給它。
2樓:匿名使用者
int * p = new int[2];
語句格式為上面形式,最後不需要一對小括號。
意思是從系統堆中分配兩個int型的空間,為連續8位元組空間(在win32系統中int為32位,4位元組),並由指標p指向已分配空間的起始地址(即第一個陣列元素的地址)。分配後新記憶體中的值一般並不會自動初始化為0,而應該由程式設計師進行初始化(可用memset或zeromemory函式,也可採用迴圈語句實現)。
在釋放由new 關鍵字分配的陣列空間時,一般要用帶的 delete語句格式(此例中即為: delete p;),不帶的格式用於釋放由new 分配的單個變數記憶體空間,用未帶的delete釋放此例中的p從語法上來看並未出錯,編譯時不會報錯,實際可能只釋放了陣列的第一個元素,這也可能是你在vs2010中執行結束時彈出錯提示的原因。
由於c/c++語法靈活多變,再者記憶體的申請與釋放以及指標的管理是c/c++中最易出錯和較難理解的部分,建議仔細閱讀c/c++中記憶體分配與釋放相關的說明,嚴格按正確的語法書寫**。
c++ 宣告指標空間問題:int *p=new int(10) 與 int *p=new int[
3樓:
int *p=new int(10) 開闢一個指標p p指的內容是一個整型,值為10
int *p=new int[10] 開闢一個長為10的陣列,預設每個值都是0,p指向array的開頭
c++ int *p = new int; 這裡的動態記憶體會預設初始化成嗎?
4樓:物理公司的
new int [n]會申請一個n個int元素的記憶體空間,相當於一個n個int元素的陣列,這個值會被賦值給p[i]。
p為int *為元素的陣列,或int**指標,其中p[i]為p的第i個元素。
於是這句話的意思就是,在p的第i個元素分配n個int元素的空間。
其後可以使用p[i][0]到p[i][n-1]共計n個元素。使用後,需要呼叫
delete p[i];
若有說明:int n=2,*p=&n,*q=p;則以下非法的賦值語句是
5樓:匿名使用者
p*n是非法的bai。
指標(pointer)是程式語言中du的一個物件,利zhi用地址,它的值直dao接內指向(points to)存在電腦儲存器中另容一個地方的值。
題目中int n=2,*p=&n,*q=p 定義整型n,p是一個指向n的指標,它的值為n的地址。q是一個指標,q的值和p的值相同,也就是它倆是同樣的地址。
p=q使得p的值等於q的值,它倆都是指標,可以賦值。*p=*q意思是指標q指向的值賦給q地址指向的值。n=*q是將指標q所指向的值賦給n。
p*n,因為兩者不是同一型別資料,所以不能進行運算,所以這個是錯的。
6樓:聽不清啊
d p*n 就是非法的,不能正確執行。
7樓:匿名使用者
p是指標,n是整數 不能使用*號
不能將int *轉化為int型
c++中,int *p=new int是可有可無的嗎?
8樓:匿名使用者
int *p = new int;
是在堆中給變數分配了一個空間,當用完後需要手動釋放。可以使用delete()函式
如果沒有int *p = new int; 是不能給p進行賦值的 因為沒有分配空間。
你也可以使用malloc分配空間,但最後釋放的時候要使用free()函式
9樓:匿名使用者
如果是int * p;
*p = 0;
那麼結果是不可預知的,可能正常執行,也可能立即崩潰,或者在任何無法預知的時候出現任何無法預知的問題。
如果是int t;
int * p=new int;
p = &t;
將會造成記憶體洩漏,如果多次出現這樣的情況,將會導致程式可用的記憶體越來越少。
10樓:千江月
不是可有可無的,得看你如何使用
舉例:1、 int *p = new int;
*p = 5;
此時p沒有空間必須申請
2、int a = 5;
int *p;
p = &a; //p不用重新申請空間,它指向a的空間。。
11樓:匿名使用者
看你對p賦值是什麼意思了。
如果說讓p指向另外一個int *指標可以。
但是如果說你要 *p =1或者什麼就不行了。
必須得new int分配空間
c++ int n; int *p=new int[n];怎樣初始化
12樓:好激動加入
new int [n]會申
復請一個n個int元素的內製存空間,相當於一個n個int元素的陣列bai,這個值會被賦值給dup[i]。
p為int *為元素的陣列,
或zhiint**指標,其中p[i]為p的第i個元dao素。
於是這句話的意思就是,在p的第i個元素分配n個int元素的空間。
其後可以使用p[i][0]到p[i][n-1]共計n個元素。使用後,需要呼叫
delete p[i];
剛學了c++ new運算子 int*p=new int[10];為陣列分配記憶體空間 那麼陣列名是什麼
13樓:莖肛戰士譚擾
在c++中,陣列名其實也是指標,它指向陣列的起始地址,通過起始地址(陣列名),就可以訪問陣列的各個元素。這裡int*p=new int[10];其實就是定義了一個指標,指向一個陣列的起始地址,該資料具有10個int型別的元素。 陣列名與指標的區別在於,陣列名是指標常量,不可以改變(++,--等運算),而指標是變數,可以改變,也就是可以進行++,--等運算來指向下一個(上一個)陣列元素。
希望採納
14樓:手機使用者
額,在c++中,new申請的記憶體是在堆上的,不是堆疊上的 所以,你申請的記憶體是動態記憶體,而這個陣列的是沒有名字的,只有通過指標p進行匿名訪問,他是一個動態陣列!
C中,intpnewint為什麼不正確
這樣子是沒有問題的啊,你定義了一個二重指標,指向了一個具有5個int 元素的陣列。除了沒有分號外,沒看出 不正確 是不是你最後沒有打分號。c 中,int p new int是可有可無的嗎?int p new int 是在堆中給變數分配了一個空間,當用完後需要手動釋放。可以使用delete 函式 如果...
請問C 中成員函式在類裡面定義和在類外定義有什麼區別
效能來說沒啥區別。不過放在類外,的定義和實現分開,有利於 封轉,別人需要呼叫你的介面的時候,你可以只給他標頭檔案,的實現自己留著。在類裡定義時,這種函式會被編譯器編譯成行內函數,在類外定義的函式則不會。行內函數的好處是加快程式的執行速度,缺點是會增加程式的尺寸。比較推薦的寫法是把一個經常要用的而且實...
c語言裡面符號什麼意思,c語言裡面一個符號什麼意思?
兩個 表示或的意思,a b,a或b,只要有一個為真,表示式就是真 數字鍵那一排右邊數起第二,即在退位鍵前,要打上端 即先壓住shift鍵再打此鍵就出來了。c語言裡面這個符號 是什麼意思?怎麼用?指向 的意思,常用於結構體指標變數訪問成員。延展 運算子 通過結構體指標變數直接獲得結構體變數的成員變數,...