1樓:
語言定義中說明, 每一種指標型別都有一個特殊值—— “空指標” —— 它與同型別的其它所有指標值都不相同, 它“與任何物件或函式的指標值都不相等”;
不要返回指向棧記憶體的指標或引用,因為棧記憶體在函式結束時會被釋放。
指標是個很強大的工具,可是正因為它太強大,所以要操作它不是件易事。操作不當造成的野指標,甚至會引起系統宕機等比較嚴重的後果。 如果程式定義了一個指標,就必須要立即讓它指向一個我們設定的空間或者把它設為null,如果沒有這麼做,那麼這個指標裡的內容是不可預知的,即不知道它指向記憶體中的哪個空間(即野指標),它有可能指向的是一個空白的記憶體區域,可能指向的是已經受保護的區域,甚至可能指向系統的關鍵記憶體,如果是那樣就糟了,也許我們後面不小心對指標進行操作就有可能讓系統出現紊亂,宕機了
2樓:
指標,太有用了,也最難管理的,好處多的是,比如,函式傳遞,引數是結構時,傳指標可以提高效能
3樓:匿名使用者
空指標的意義嘛,就是說你不應該對它進行任何讀寫操作
很多返回一個指標的函式,都會返回空指標,表示函式操作失敗,例如 fopen 在開啟檔案失敗後就返回空的檔案指標
c語言中的空指標是什麼意思?
4樓:匿名使用者
這樣一看才知道大家對空指標的概念如此渾濁哦!!
首先:void* 這不叫空指標,這叫無確切型別指標.這個指標指向一塊記憶體,卻沒有告訴程式該用何種方式來解釋這片記憶體.
所以這種型別的指標不能直接進行取內容的操作.必須先轉成別的型別的指標才可以把內容解釋出來.
還有'\0',這也不是空指標所指的內容. '\0'是表示一個字串的結尾而已,並不是null的意思.
真正的空指標是說,這個指標沒有指向一塊有意義的記憶體,比如說:
char* k;
這裡這個k就叫空指標.我們並未讓它指向任意地點.
又或者char* k = null;
這裡這個k也叫空指標,因為它指向null 也就是0,注意是整數0,不是'\0'
一個空指標我們也無法對它進行取內容操作.
空指標只有在真正指向了一塊有意義的記憶體後,我們才能對它取內容.也就是說要這樣
k = "hello world!";
這時k就不是空指標了.
5樓:匿名使用者
如果函式的引數可以是任意型別指標,那麼應宣告其引數為void *
典型的如記憶體操作函式memcpy和memset的函式原型分別為:
void * memcpy(void *dest, const void *src, size_t len);
void * memset ( void * buffer, int c, size_t num );
這樣,任何型別的指標都可以傳入memcpy和memset中,這也真實地體現了記憶體操作函式的意義,因為它操作的物件僅僅是一片記憶體,而不論這片記憶體是什麼型別。空指標僅僅是申明瞭一個變數名,告訴編譯器有個變數存在,當然你後面肯定會用到它(事實上你不用也沒人怪你)。
注意c++中語法要求更嚴格,不允許直接對空指標賦值,而必須先進行型別轉換。
6樓:藍冰_藍水
上面的錯了。其實空指標就是指值為null的指標。而且null在c和c++的定義方式也不一樣,甚至不同的編譯器也有不同的要求。
例如:define null 0 //c的定義方式
define null (void *)0 //c++的定義方式
7樓:匿名使用者
指標沒有指向任何東西
空指標指的就的'\0'!
8樓:匿名使用者
指標沒有指向任何東西
9樓:匿名使用者
空指標指的就的“0”!
10樓:你是臥底
char* k 不能算空指標吧
c語言空指標是怎麼回事
11樓:風若遠去何人留
空指標指的就是null
也就是0指標
指標的含義 是一個地址。 而0地址是非法地址。對這個地址進行賦值 或者取值 就會出現空指標錯誤
在實際程式設計中,經常把指標初始化為空指標, 在訪問的時候進行判斷, 如果為空,那麼就是還沒有正確賦值的, 應該避免訪問。
12樓:匿名使用者
當你使用了一個未初始化的指標,就會報這個錯誤。
在c語言的指標使用中,null的值是?
13樓:匿名使用者
c語言中null是個巨集,在stddef.h中定義:
#ifndef null
#ifdef __cplusplus //如果是c++則為0#define null 0
#else
#define null ((void *)0) //c中為((void *)0)
#endif
#endif
無論是哪個語言,從數值角度上來說,null就是0。作為指標型別變數,賦值為null時,表示該指標是個空指標。null常用來判斷一個指標變數是否為空指標,從而確定程式下一步的操作。
如,程式開始,定義一個指標變數並初始化為空,在程式過程中,有可能使用該變數,也可能未使用該變數,則在程式返回前,可以通過判斷其是否為空指標,來進行記憶體釋放(防止記憶體洩露)。
void func()
14樓:
在c語言中null被定義為:
#define null ((void*)0)表示其值是0,但意義是空指標。把一個指標賦值為null,通常的說法是“將指標懸空”,這樣可以防止對無效地址的訪問。
但是在c++語言中null被定義為:
#define null 0
vc裡也是這樣定義的。
15樓:湛藍水晶
#define null (void*)0
16樓:匿名使用者
null的值為0。寫成地址就是0x00000000。
17樓:我的
就0,以後程式設計會經常用到這個東西,特別是分配記憶體的時候
18樓:嗜血魂
自己動手哎
printf下不就知道了麼?
c語言 空指標
19樓:
空指標是其值為null或0的指標,在下認為稱之為“指向”null或“指向”0的指標都是錯誤說法,因為若有int a,*p=&a;,則稱指標p指向了a,並不能說指標p指向了&a,只能說p的值是&a,不然就大錯特錯了。沒有指向(即沒有賦值),或指向的目標已銷燬了的指標稱為懸浮指標(可能人們據說的野指標也是它吧)。int *p=null,*n=null,p=n是不是有意義呢?
單純看這裡是沒有意義的,但指標是變數,如果保證指標n不變化且是null,那n就是空常指標,一點意義都沒有。否則的話p=n保證在生存期間指標p是跟隨n變化的。這就是p=n存在的意義。
20樓:
int *p;p=&a空指標也分配了空間它裡面是隨機的碼,我認為int *p和int*p=null是一樣的。p=n就是p和n都指向了一個n內的隨機數。
21樓:魂歸紅魔
個人理解,在c語言中空指標是指向null的指標,而在c++中則是指向地址為0的指標,雖然在實際應用中,基本一致,但是還是有點差別。另外,空指標本身是有地址的。在c++中是一樣的,在c中就變成了null==null的問題了,這就是仁者見仁智者見智的問題。
c語言中的空指標是什麼意思?山東
22樓:匿名使用者
這樣一看才知道大家對空指標的概念如此渾濁哦!!
首先:void* 這不叫空指標,這叫無確切型別指標.這個指標指向一塊記憶體,卻沒有告訴程式該用何種方式來解釋這片記憶體.
所以這種型別的指標不能直接進行取內容的操作.必須先轉成別的型別的指標才可以把內容解釋出來.
還有'\0',這也不是空指標所指的內容. '\0'是表示一個字串的結尾而已,並不是null的意思.
真正的空指標是說,這個指標沒有指向一塊有意義的記憶體,比如說:
char* k;
這裡這個k就叫空指標.我們並未讓它指向任意地點.
又或者char* k = null;
這裡這個k也叫空指標,因為它指向null 也就是0,注意是整數0,不是'\0'
一個空指標我們也無法對它進行取內容操作.
空指標只有在真正指向了一塊有意義的記憶體後,我們才能對它取內容.也就是說要這樣
k = "hello world!";
這時k就不是空指標了.☆
23樓:匿名使用者
就是指向null的指標唄..不做處理的指標就有可能是野指標了,就是亂指的指標了。
c中指標怎麼用,c語言中指標怎麼使用
int p 宣告一copy個指向int的指標pint a a 3 p a printf d p 列印a的地址printf d p 列印a的值 p 4 改變a的值。printf d a 列印a的值為4 推薦看書 c和指標 這裡最好的回答吧,指標可不是一天兩天能夠學會的 c語言中指標怎麼使用?1 使用場...
c語言中指標和引用的區別,C語言中指標和引用的區別
指標,全稱為指標變數,是用來儲存記憶體地址的一種變數。程式中,一般通過指標來訪問其指向的記憶體地址中的內容 資料 引用,是c 中提出來的一種新的使用變數的方式,即,給實際變數起個別名,通過這個別名來引用實際的變數。標準c中不支援變數的引用。這兩個概念沒有任何相關性。指標是實實在在的變數,有自己的記憶...
c語言中指標在程式設計中有什麼作用,C語言中指標在程式設計中有什麼作用?
指標,太有用了,也最難管理的,好處多的是,比如,函式傳遞,引數是結構時,傳指標可以提高效能 可以通過傳遞和儲存指標,通過資料的相對位置來訪問資料,而不用定義不同的n個變數來,分別使用。比如 int a 10 那麼用a 0 a 9 即可訪問裡面的10個資料,而只需要知道a的地址即可,操作方便,而且在函...