c int p和int pnew int有什麼區別 搞不懂int p和new出來的指標在記憶體中的存放位置

2021-05-14 08:06:26 字數 3461 閱讀 5974

1樓:

int *p; // 只是定義一個指標變數,但它還沒有在堆記憶體分配空間。

*p=123; // 錯誤,因為還沒有記憶體空間可以儲存123這個值。

int * p2 = new int; // 為指標變數p2分配了一個記憶體空間

*p2=123; // 正確,因為此時p2有空間可以儲存123這個值。

int *p;*p=new int;及int *p;p=new int;這兩個有什麼區別嗎?

2樓:匿名使用者

int *p;*p=new int;

int *p; //p定義為指標,但是尚未分配或者指定地址。

*p=new int; //需要修改p指向的地址的值,但是此時p沒有指定地址,所以會報錯。

3樓:匿名使用者

前者非法,編譯會報錯

int *p=new int; int *p=new int[10]; int *p=new int(10);這三個有什麼區別,什麼時候用?

4樓:

int *p=new int;——分配一個baiint型變數所du佔大小的空間,zhi並將首地址賦給int *型指

dao針p。

int *p=new int[10];——分配一專個有10個int型元素屬

的陣列所佔空間,並將該陣列的第一個元素的地址賦給int *型指標p。

int *p=new int(10);——分配一個int型變數所佔大小的空間,在其中放入十進位制數10,並將首地址賦給int *型指標p。

至於怎麼用,那知道了意思,就只能說按需要選擇了……

c++ 宣告指標空間問題:int *p=new int(10) 與 int *p=new int[

5樓:

int *p=new int(10) 開闢一個指標p p指的內容是一個整型,值為10

int *p=new int[10] 開闢一個長為10的陣列,預設每個值都是0,p指向array的開頭

c++中, int *p = new int[10]; int *p1 = new int[10](); 有什麼區別?

6樓:匿名使用者

int *p = new int[10]; 申請10個整數的空間,但不進行初始化, 相當於malloc

int *p = new int[10]; 申請10個整數的空間,並對其進行初始化

c++中,int *p=new int是可有可無的嗎?

7樓:匿名使用者

int *p = new int;

是在堆中給變數分配了一個空間,當用完後需要手動釋放。可以使用delete()函式

如果沒有int *p = new int; 是不能給p進行賦值的 因為沒有分配空間。

你也可以使用malloc分配空間,但最後釋放的時候要使用free()函式

8樓:匿名使用者

如果是int * p;

*p = 0;

那麼結果是不可預知的,可能正常執行,也可能立即崩潰,或者在任何無法預知的時候出現任何無法預知的問題。

如果是int t;

int * p=new int;

p = &t;

將會造成記憶體洩漏,如果多次出現這樣的情況,將會導致程式可用的記憶體越來越少。

9樓:千江月

不是可有可無的,得看你如何使用

舉例:1、 int *p = new int;

*p = 5;

此時p沒有空間必須申請

2、int a = 5;

int *p;

p = &a; //p不用重新申請空間,它指向a的空間。。

10樓:匿名使用者

看你對p賦值是什麼意思了。

如果說讓p指向另外一個int *指標可以。

但是如果說你要 *p =1或者什麼就不行了。

必須得new int分配空間

c++中,int **p=new int*[5]為什麼不正確?

11樓:匿名使用者

這樣子是沒有問題的啊,你定義了一個二重指標,指向了一個具有5個int*元素的陣列。

12樓:

除了沒有分號外,沒看出**不正確

13樓:匿名使用者

是不是你最後沒有打分號。。。

c++ int n; int *p=new int[n];怎樣初始化

14樓:好激動加入

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++的int (*p)[3]與int *p,int**p的區別

15樓:匿名使用者

int *p是指標,指向一個int型別;int **p是指標的指標指向int *型別(理解方便,可以理解為int *型別);int (*p)[3] 是指標的指標(二維陣列指標),指向一個陣列,而陣列內容指向一個一維含3個元素的陣列,簡單講即*p指向int[3]型別,當然*(p+1)....*(p+n)都指向一個一維含3個元素的陣列,p本身指向一個陣列。

new int[5][5]編譯是通不過的,二維動態陣列不是這樣分配的,需要先申請int *型別陣列,陣列的元素再賦值為int [5]型別的資料即

int **p=new int*[5];

for(int i=0;i<5;++i)

p[i] = new int[5];

16樓:匿名使用者

int (*p)[3]表示p是個指向維度為3的二級指標相當於一個n行3列陣列a[n][3],每一行的首地址;

int *p表示一個指向整形的指標;

int**p表示一個二級指標;

其中int (*p1)[3]與int**p2都是二級指標,對於二維陣列來說我覺他們最大區別就是p1只能指向列數為3的二維陣列的首地址;而p2可以指向任意二維陣列首地址;同時要注意他們兩者之間+ 、++ 等運算子的規律也不一樣

17樓:朗懌

int (*p)[3],p是一個陣列指標

int *p; p是一個指標變數

int **p; p是一個二級指標

通分13和25。38和512。724和

通分1 3和2 5為5 15和6 15 3 8和5 12為9 24和10 24 7 24和7 16為14 48和21 48 5 15和10 15,6 24和10 24,14 48和21 48。5 12 7 8和11 16 怎麼通分?急!求!謝!12 8 16的最小公倍數是48,所以 5 12 20 ...

the和an和a的區別,a an和the的區別

a用於子音音素前,a useful book an則用於母音音素前,an hour 定冠詞 例如英語中的the 用來限定這個冠詞後面的名詞是某個特定的事物 特指雙方都明白的人或物 例如 give me the book.沒有單一規則可用來確定使用或不用冠詞a an the。對於是否要使用冠詞,在某些...

用既然和既然和哪怕和甚至和只要和就造句

1.遇到困難不要抱怨,既然改變不了過去,那就改變未來。2.既然我從不迷信中秋的月光比平時漂亮,為何此刻會有失落的感覺?3.我們都來自緣分,最終還要回歸忘記,既然世事空幻,為何還要執著在無名產生的煩惱裡。用煩惱的心看世界,你會無路可逃 用輕鬆的眼看世界,你會發現這個世界處處都是突然的美好。4.你既然認...