int p p new int及int p p new int這兩個有什麼區別嗎

2021-05-16 23:09:40 字數 3466 閱讀 7092

1樓:匿名使用者

int *p;*p=new int;

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

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

2樓:匿名使用者

前者非法,編譯會報錯

const int *p和int * const p的區別

3樓:育知同創教育

const int *p和int * const p的區別如下:

const int *p表明指向的物件是const型,不可以修改,但是指標p的指向可以修改。

* const p表明指標變數p是const型,它的指向不可修改,但是指向的物件可以修改。

一般來說用*限定的是指標區域存放的內容,不用*的是記憶體地址。

4樓:刀無極啊

你可以看看這篇文章,講的很仔細

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

5樓:匿名使用者

int *p = new int;

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

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

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

6樓:匿名使用者

如果是int * p;

*p = 0;

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

如果是int t;

int * p=new int;

p = &t;

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

7樓:千江月

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

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

*p = 5;

此時p沒有空間必須申請

2、int a = 5;

int *p;

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

8樓:匿名使用者

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

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

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

必須得new int分配空間

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

9樓:

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

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

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

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

int p[3]和int *p=new int[3]這兩種建立陣列的區別

10樓:匿名使用者

int p[3] 定以後就已經分配空間了;

int *p=new int[3] 這種定義是手動分配的空間,需要delete釋放,不然就造成 傳說中的記憶體洩露

「int **p」和「int *p」有什麼區別?

11樓:怕不他啊不了

int *p表示的是一級指標,表示p所指向的地址裡面存放的是一個int型別的值。

int **p表示的是二級指標,表示p所指向的地址裡面存放的是一個指向int型別的指標。

一級指標存放變數的地址,指向的值是變數的內容。如int* p=, p=陣列的首地址,*p=陣列的第一個值;

二級指標存放一級指標的地址,指向一級指標。如int*p =, int**pp=&p,pp=指標p的首地址,*pp=陣列的首地址,**pp=陣列第一個值1。

指標陣列的陣列名傳遞引數對應為指標的指標即二級指標,二維陣列的陣列名傳遞引數對應為陣列指標即指向一維陣列的指標

一級指標通過形參,可以修改實參中指標所指向的地址中的值。修改不了實參中指標所指向的地址。需要藉助二級指標才可以。

12樓:尉詩桃牟畫

int*p

:一級指標,表示p所指向的地址裡面存放的是一個int型別的值int**p

:二級指標,表示p所指向的地址裡面存放的是一個指向int型別的指標(即p指向的地址裡面存放的是一個指向int的一級指標)

例如:int

i=10;

//定義了一個整型變數

int*p=&i;

//定義了一個指標指向這個變數

int**p1=&p;

//定義了一個二級指標指向p指標

那麼取出10的值方式為:

printf("i=[%d]\n",*p);

printf("i=[%d]\n",**p1);

int *p=new int; int *p=new int(8); int *p=new int[8]; 編譯執行都沒問題,具體區別在**呢?

13樓:鐳毅

int *p=new int;//定義一個int型的指標,並分配一個元素

int *p=new int[8];//定義一個int型的指標,並分配8個元素的空間

int *p=new int(8);//主要用於定義函式指標:

比如:class a

};void f(void) catch (...)try catch (...)

}int main()

14樓:

第一個p是指向int的指標,第二個p也是指向int的指標,但是賦初值為8,第三個是指向int陣列的指標,陣列初始大小為8。

int *p= new int();與int *p= new int;有什麼內在的區別?希望知道的幫助一下

15樓:匿名使用者

char *buffer=new char[n]表示buffer裡存放的char型別字元,文字檔案存放方式就是一個字元一個字元存放的,所以讀取的時候可以放在buffer裡.用read函式讀的話就是:read(buffer,n),每次讀一個位元組直到讀完n個位元組.

如果是int *buffer=new int[n],用read讀就會報錯,型別不匹配.int *buffer=new int[n]存放的是int型的,但也可存放其他基本型別的,編譯會隱式轉換為int型的.

c 中的 int是什麼意思,C 中的 int 是什麼意思

定義一個int型的指標 例如 int p 定義一個指向int型變數的指標char p1 定義一個指向char型變數的指標int p2 定義一個指向int型指標的指標,即指向指標的指標 name本身是一個char 型的變數,就是一個指標,指向輸入的名字字串的首字元的地址。如果直接輸出name,輸出的就...

Intel Core i5 2500K和Intel Core i5 4570對比哪個好

i5 4570要好一點 1 i5 2500k主頻3.3ghz最大睿頻3.7ghz外頻100mhz倍頻33x 匯流排型別 dmi匯流排 匯流排頻率 5.0gt s插槽型別lga 1155針腳 2 i5 4570主頻版 3.2ghz 製作工藝 權22奈米 快取 6mb 核心數量 四核心 四執行緒核心代號...

mysql中int和integer什麼區別

問題 mysql 中int和integer什麼區別答案 沒有區別 分析 int m unsigned zerofill 普通大小的整數。帶符號內的範容圍是 2147483648到2147483647。無符號的範圍是0到4294967295。integer m unsigned zerofill 這是...