1樓:雨曄
null使系統的一個空地址
是不能給他進行賦值的
int *i=null
這樣定義
是為了防止沒有對指標i進行初始化
就使用會有可能導致系統崩潰的
因為定義指標int *i,k;
如果沒有對它進行初始化i=&k;
就進行賦值*i=12;
那麼編譯的時候是不會提示出錯的
頂多有個警告
但很多菜鳥會認為警告不要緊
而進行執行
那麼指標如果是指向了系統所佔用部分的記憶體
那麼執行後就會改變系統的部分內容
導致系統崩潰的
2樓:
int *i=null; 此時i並不指向任何實際記憶體空間,scanf("%d",i);讀入的資料怎麼能存放在一個不存在的空間中呢?!
而long *l;l='\0';我不知道是誰說是正確的。
如果*l並不指向一個已分配的空間,未初始化(非法)『\0』作為常量字元,並不是一個指標。在通常做法中不會這樣賦值。
它能編譯且執行,看來編譯環境將這種方式認為是(long *l=null; )另一種表達方式。
3樓:匿名使用者
關於那句話,見一樓回答,很對
定義指標變數時已經分配了記憶體空間,只不過,這個空間只能儲存地址,也只能以地址的方式訪問變數,所以必須指明指標所指向的地址,如果不指明,指標中儲存的是隨機值,對它的訪問可能會導致異常甚至系統崩潰,賦值為null,指向無權訪問的記憶體區,導致異常退出.
至於"long *l;l='\0';"的正確,我也很納悶,除非將'\0'解釋為字串.因為所有的括號擴起來的變數都被當作字串常量,可以直接賦給字串指標如:char *ch="haha";
C語言程式問題請教高手
include include typedef struct lnode 定義結點型別 listnode void creat1 listnode l head struct lnode malloc sizeof struct lnode 生成表頭結點 if head return 申請記憶體沒有...
c語言問題,求高手指教,一個C語言問題,求高手指教!
典型的求素數的 這是等於是可能的 如果不是素數,那麼k不等到i就break跳出迴圈了,這個你明白 所以k小雨i的時候就不是素數 如果是素數,那麼k會迴圈到i,這個是for的機制得出的。那麼k和i相等 所以判斷是否是素數的條件就是判斷k和i是否相等 只要k不大於i即使素數,大於等於包含等於,所以可以這...
求高手指教c語言函式怎麼返回結構體
不不見不念 include stdio.h struct abc void main void struct abc x y y myabc printf d d p n d d p n x.a,x.b,x.p,y.a,y.b,y.p include include include struct p...