C語言中的空指標是什麼意思? - 第一問答網

文章推薦指數: 80 %
投票人數:10人

C語言中的空指標,C語言中的空指標是什麼意思?,1樓雨曄int p 47 這個用法是不正確的這個語句等於下邊的int p p 47 你直接將指標p的值賦值為47是很 ... C語言中的空指標,C語言中的空指標是什麼意思? 2021-06-2514:47:34字數4629閱讀4612 1樓:雨曄 int*p=47; 這個用法是不正確的 這個語句等於下邊的 int*p; p=47; 你直接將指標p的值賦值為47是很危險的 應為如果記憶體中地址為47的地方剛好是某個系統程式或關鍵模組佔據的話你進行下面 *p=20;的賦值行為 有可能導致系統直接崩潰哦 2樓:匿名使用者 是的,不過這很危險。

而且cpu的32位保護機制也未必能讓。





3樓:匿名使用者 在定義時在*p後直接加個數字表示指向記憶體的47號地址。

而*p表示47號地址指向的數。

所以不能賦值。

*p=20是錯誤的。

在定義指標變數的時候是不允許不賦初值的,後果可能使系統崩潰。

4樓:中質子 *p=20把p所指向的地址中的值設為20 int*p=47p所指向的地址 5樓:匿名使用者 inta; int*p; a=47; *p=47; *p不等於a a=47; (*p)=47; a等於*p 6樓:種馳樂正雪珊 不可以。

指標變數在使用前必須初始化,未初始化的區域性自動變數的值是隨機的,a和b可能指向記憶體中的任意地址。

當執行*a=10;和*b=20;這兩條賦值時會破壞記憶體中原有的資料,如果a和b指向的是不能讀寫的區域,那麼就會產生嚴重的錯誤。

你這個**中a和b就是野指標。

7樓:匿名使用者 int*p=47; 是錯的吧指標不是地址嗎好象不能直接賦值的吧 c語言中的空指標是什麼意思? 8樓:匿名使用者 這樣一看才知道大家對空指標的概念如此渾濁哦!! 首先:void*這不叫空指標,這叫無確切型別指標.這個指標指向一塊記憶體,卻沒有告訴程式該用何種方式來解釋這片記憶體. 所以這種型別的指標不能直接進行取內容的操作.必須先轉成別的型別的指標才可以把內容解釋出來. 還有'\0',這也不是空指標所指的內容.'\0'是表示一個字串的結尾而已,並不是null的意思. 真正的空指標是說,這個指標沒有指向一塊有意義的記憶體,比如說: char*k; 這裡這個k就叫空指標.我們並未讓它指向任意地點. 又或者char*k=null; 這裡這個k也叫空指標,因為它指向null也就是0,注意是整數0,不是'\0' 一個空指標我們也無法對它進行取內容操作. 空指標只有在真正指向了一塊有意義的記憶體後,我們才能對它取內容.也就是說要這樣 k="helloworld!"; 這時k就不是空指標了. 9樓:匿名使用者 如果函式的引數可以是任意型別指標,那麼應宣告其引數為void* 典型的如記憶體操作函式memcpy和memset的函式原型分別為: void*memcpy(void*dest,constvoid*src,size_tlen); void*memset(void*buffer,intc,size_tnum); 這樣,任何型別的指標都可以傳入memcpy和memset中,這也真實地體現了記憶體操作函式的意義,因為它操作的物件僅僅是一片記憶體,而不論這片記憶體是什麼型別。

空指標僅僅是申明瞭一個變數名,告訴編譯器有個變數存在,當然你後面肯定會用到它(事實上你不用也沒人怪你)。

注意c++中語法要求更嚴格,不允許直接對空指標賦值,而必須先進行型別轉換。

10樓:藍冰_藍水 上面的錯了。

其實空指標就是指值為null的指標。

而且null在c和c++的定義方式也不一樣,甚至不同的編譯器也有不同的要求。

例如:definenull0//c的定義方式 definenull(void*)0//c++的定義方式 11樓:匿名使用者 指標沒有指向任何東西 空指標指的就的'\0'! 12樓:匿名使用者 指標沒有指向任何東西 13樓:匿名使用者 空指標指的就的“0”! 14樓:你是臥底 char*k不能算空指標吧 c語言中,空指標的使用意義是什麼?在程式設計中使用空指標會帶來什麼影響? 15樓:百度網友 語言定義中說明, 每一種指標型別都有一個特殊值—— “空指標” —— 它與同型別的其它所有指標值都不相同, 它“與任何物件或函式的指標值都不相等”; 不要返回指向棧記憶體的指標或引用,因為棧記憶體在函式結束時會被釋放。

指標是個很強大的工具,可是正因為它太強大,所以要操作它不是件易事。

操作不當造成的野指標,甚至會引起系統宕機等比較嚴重的後果。

 如果程式定義了一個指標,就必須要立即讓它指向一個我們設定的空間或者把它設為null,如果沒有這麼做,那麼這個指標裡的內容是不可預知的,即不知道它指向記憶體中的哪個空間(即野指標),它有可能指向的是一個空白的記憶體區域,可能指向的是已經受保護的區域,甚至可能指向系統的關鍵記憶體,如果是那樣就糟了,也許我們後面不小心對指標進行操作就有可能讓系統出現紊亂,宕機了 16樓: 指標,太有用了,也最難管理的,好處多的是,比如,函式傳遞,引數是結構時,傳指標可以提高效能 17樓:匿名使用者 空指標的意義嘛,就是說你不應該對它進行任何讀寫操作 很多返回一個指標的函式,都會返回空指標,表示函式操作失敗,例如fopen在開啟檔案失敗後就返回空的檔案指標 c語言,空指標,野指標,通用指標 18樓:匿名使用者 野指標就是不知道指向**,或者說不知道指向的記憶體是否可以使用,一般都是剛剛宣告但沒有初始化的指標。

空指標不是指向常數0,只指向地址0,即null,其實換句話說,指標的本質就是地址嘛,空指標就是指標本身的值(地址)為0 空指標的作用是防止野指標的出現,因為我們不能知道野指標到底指向**,所以我們也無法判斷一個指標是否是野指標,這樣很危險,但如果養成將指標初始化為空指標的習慣,我們就能判斷出這個指標是不是有效的(判斷是不是null就可以了) 通用指標一般都用在函式傳參,實現所謂的“多型”,但到函式裡面使用時,一般還是被轉換成具體型別的指標。

19樓:匿名使用者 首先空指標並不是指向0的指標,空指標是什麼,就是一個被賦值為0的指標,在沒有被具體初始化之前,其值為0. 所以指標沒有指向常數0,它指向的儲存空間是null,暫時為0. c語言空指標 20樓: 空指標是其值為null或0的指標,在下認為稱之為“指向”null或“指向”0的指標都是錯誤說法,因為若有inta,*p=&a;,則稱指標p指向了a,並不能說指標p指向了&a,只能說p的值是&a,不然就大錯特錯了。

沒有指向(即沒有賦值),或指向的目標已銷燬了的指標稱為懸浮指標(可能人們據說的野指標也是它吧)。

int*p=null,*n=null,p=n是不是有意義呢? 單純看這裡是沒有意義的,但指標是變數,如果保證指標n不變化且是null,那n就是空常指標,一點意義都沒有。

否則的話p=n保證在生存期間指標p是跟隨n變化的。

這就是p=n存在的意義。

21樓: int*p;p=&a空指標也分配了空間它裡面是隨機的碼,我認為int*p和int*p=null是一樣的。

p=n就是p和n都指向了一個n內的隨機數。

22樓:魂歸紅魔 個人理解,在c語言中空指標是指向null的指標,而在c++中則是指向地址為0的指標,雖然在實際應用中,基本一致,但是還是有點差別。

另外,空指標本身是有地址的。

在c++中是一樣的,在c中就變成了null==null的問題了,這就是仁者見仁智者見智的問題。

c語言中,空指標null會佔記憶體嗎?多少位元組 23樓:劉培鑫 佔用的這個指標比如char*p;p=null; p是個指標佔4位元組,只是裡面的地址值是0而已 24樓:匿名使用者 null表示的只是這個地址為空而已,這個指標變數本身還是要佔記憶體的,32位環境下,指標所佔的記憶體都是4個位元組 25樓:匿名使用者 一樣要佔記憶體,其大小應該是看你定義的變數的來分配記憶體的 26樓:匿名使用者 指標都會佔用4個位元組的記憶體,null只是表示沒有指向記憶體 c語言中空指標0與null相同嗎 27樓:匿名使用者 c語言的0和null的確是相同的,null其實是一個#define定義,在每一種c語言編譯器中都有標頭檔案來定義null這個符號,null的定義類似於這樣: #definenull0 所以空指標0和空指標null是一回事。

相關推薦 C語言中的空指標,C語言中的空指標是什麼意思? sql表中的空字串與null中的區別何在 c語言出現空指標賦值怎麼回事請高手幫忙看下 相關推薦 C語言中的空指標,C語言中的空指標是什麼意思? sql表中的空字串與null中的區別何在 c語言出現空指標賦值怎麼回事請高手幫忙看下 相關閱讀 C語言中的空指標,C語言中的空指標是什麼意思? sql表中的空字串與null中的區別何在 c語言出現空指標賦值怎麼回事請高手幫忙看下 topic 社會 教育 文化 健康 娛樂 科技 心理 時尚 家居 美食 收藏 旅遊 育兒 汽車 財經 科學 數碼 遊戲 寵物 三農 職場 歷史 體育 動漫 國際 軍事 知識 電影 其它



請為這篇文章評分?