c語言為什麼int p null p對,而int p null p q不對

2021-04-12 07:18:52 字數 3158 閱讀 4792

1樓:匿名使用者

因為你的p指向的是null,*p是給null的位址賦值操作,當然是不可能的。

c語言中 int *p=null; 則這條語句是不是錯的? *p=0

2樓:匿名使用者

前面int *p=null;就是定義bai乙個du空指標。zhi但後面*p=0;可以正

dao常執行的前提,是這個p指標指向了內乙個合法記憶體空間容。

譬如:int a;

int *p=null;

p=&a;    /*p指向變數a的位址*/*p=0;    /*這裡的意思就是把0寫入p指向的記憶體空間,也就是變數a存放的空間,這樣就改變了變數a的值*/

這樣是可以的。

3樓:匿名使用者

沒錯,這是定義乙個指標變數p,並賦值為空,用以說明該指標沒有任何指向性。

該指標的值為null在儲存單元中的指向為0,也就是不指向任何位址。單看這一條語句的話,是沒有意義的。

4樓:匿名使用者

p賦為null,之後再賦值是可以的,但*p=0,本身就有問題

5樓:非常可愛

c語言bai

中int *p=null意思是:

c語言du中p裡面是隨機值,在zhiint *p=null,這個p是有值的,dao為null;

int *p=null指向乙個空指標專,等於屬 int *p=0; null等於0;

可以隨時讓這個p指向其他位址。定義指標,將它初始化為null,這樣做程式設計更規範。

擴充套件資料

*p = null的作用

代表對乙個由指標p指向的變數(什麼型別,不知道),賦值為0,是將那個變數賦值為0。

int *p;

*p = null;

第一行**,定義了乙個指標變數p,其指向的記憶體裡面儲存的是int型別的資料;但是這時候變數p本身的值是多少不得而知,也就是說現在變數p儲存的有可能是乙個非法的位址。

第二行**,給*p賦值為null,即給p指向的記憶體賦值為null;但是由於p指向的記憶體可能是非法的,所以除錯的時候編譯器可能會報告乙個記憶體訪問錯誤。這樣的話,可以把上面的**改寫,使p指向一塊合法的記憶體:

int i = 10;

int *p = &i;

*p = null;

c語言中int *p=null是什麼意思

6樓:非常可愛

c語言中

int *p=null意思是:抄

c語言襲中p裡面是隨機值,在int *p=null,這個p是有值的,為null;

int *p=null指向乙個空指標,等於 int *p=0; null等於0;

可以隨時讓這個p指向其他位址。定義指標,將它初始化為null,這樣做程式設計更規範。

擴充套件資料

*p = null的作用

代表對乙個由指標p指向的變數(什麼型別,不知道),賦值為0,是將那個變數賦值為0。

int *p;

*p = null;

第一行**,定義了乙個指標變數p,其指向的記憶體裡面儲存的是int型別的資料;但是這時候變數p本身的值是多少不得而知,也就是說現在變數p儲存的有可能是乙個非法的位址。

第二行**,給*p賦值為null,即給p指向的記憶體賦值為null;但是由於p指向的記憶體可能是非法的,所以除錯的時候編譯器可能會報告乙個記憶體訪問錯誤。這樣的話,可以把上面的**改寫,使p指向一塊合法的記憶體:

int i = 10;

int *p = &i;

*p = null;

7樓:衄潲

樓上bai說的都對,看來你是新du手,建議你去看林銳zhi

的《高質量daoc++》,這本書,內你一定會喜歡的,因容

為他對於入門者來說特別好,他會給你講正確的程式設計規範是什麼。其中那塊講指標的部分就寫了,定義指標,一般先給初始化,用null來初始化它,避免野指標。你這裡說的int *p,這個p裡面是隨機值,而int *p=null,這個p是有值的,為null.

這其實對程式也沒有啥貢獻,在後面你也可以隨時讓這個p指向別的位址。定義指標,順便將它初始化為null,這樣做程式設計更規範。

int *p=null 和int *p ;p=null 和*p = null 這三個的區別

8樓:匿名使用者

第一種bai是定義乙個int型指標,並du給它初始化為zhinull,也就是個空指標,沒有dao指向任何地方,就是個空內的。容

第二種是定義乙個int型指標,然後給指標賦值為null,指標指向null位址。

第三種是給指標的值賦值為null,也就是給指標指向的內容賦值為0(也就是為空)。

9樓:匿名使用者

第乙個定義乙個指向變數null的指標p;第二個是定義乙個指標p,但沒有被配記憶體;其中p=null為非法賦值,會出錯;第三個式子中p為指標,通過*p運算說明指標p所指向位址內容是變數null。

10樓:匿名使用者

不知道你是c還是c++,就c++來說吧!int *p=null是整型指標指向空,

就是什麼也沒有但這樣是

版安全的,int *p指宣告指標並未初始權化指標可能指向不知道的地方,null在c++也指能以指標來理解吧!

11樓:匿名使用者

第乙個是將空值付給整形指標變數p 第二個是定義乙個整形指標p 然後將空值付給p 第三個是 將乙個空值付給指標p 希望對你有幫助,請採納。

c語言裡int *p; if(*p==null)和if(p==null)有什麼區別 我不怎麼理解這

12樓:

帶*號是取值的意思,即取指向位址的值。

所以if(*p == null)是判斷指標p指向的位址儲存的值是否為null

if(p == null)是判斷指標p是否指向null希望對你有幫助。

13樓:聽不清啊

int *p;的話,

*p是乙個int值,所以,if(*p==null)是不對的。

14樓:匿名使用者

不理解慢慢理解。用腦子。。。。。

c語言中752,為什麼,在C語言中type怎麼使用

表示為取餘,5 10的值為0。中除數與被除數都須為整數。3 2為 1,3 2為1。取餘後的結果與被除數的符號一致。x 5 x 5 5 x 5 5 2 5 3 5 3 在c語言中type怎麼使用 typedef常用抄來自定義型別,比如 typedef int a 那麼你就可以使用a去定義int形的變數...

C語言printfd na bb a 結果為什麼是30,printfd na bb a也是一樣

a 我們都知道它bai相等於 a a 1 的這個du寫法 那麼 a 是什麼呢?zhi a 實際上跟 a 的差別不大。daoa 是之後在執內行 a是之前就已經容 執行a 的例子 a 5 printf d n a 那麼這個答案應該是5,因為它是之後再執行 printf d n a 那麼現在a 就已經是4...

c語言為什麼這裡不用取位址符號,C語言為什麼這裡不用取位址符號scanfd,p而要用P

p就是位址,懂嗎?p指向了陣列a,p的位址就是陣列a的位址,p 就指向了下乙個陣列中的位址 p就是指標。指向陣列a的首位址。每次迴圈p 指向陣列的下乙個元素的指標 c語言取位址符有什麼用,為什麼scanf一定要用 取地來址符的作用是告訴系源統定義的變數的值存bai放在記憶體du空間的位址 scanf...