C 語言常見誤解指標空指標與NULL | 魚的世界
問:下列程式碼一定可以拿到空指標嗎?inta=0;int*p=(int*)a;.答:不保證。只有常數表達式才保證會轉型成空指標,執行期間才得到的零不保證可以成功轉型成空 ...
指標(二)空指標與 NULL 編輯[1]問:NULL 是空指標嗎?型態是什麼?
答:NULL 不一定是指標,但一定是空指標常數(兩者概念不同)。空指標常數轉型成指標後保證可以拿到正確的空指標,但自己不一定是指標。C99 (N1256) 中,空指標常數代表計算結果為零的整數常數表達式,如 0 或 0ULL,或是前述表達式轉型成 void*, 如 (void*)(0U).
C++03 中空指標常數只能是計算結果為零的整數常數表達式,如 0, 連指標都不是,在多載時可能會選了錯誤的函式。C++0x 引入 nullptr 企圖解決這問題。(可參考較容易閱讀的 More C++ Idioms/nullptr[2])
問:下列程式碼一定可以拿到空指標嗎?
int a = 0; int *p = (int *)a;答:不保證。只有常數表達式才保證會轉型成空指標,執行期間才得到的零不保證可以成功轉型成空指標。一個可能的原因是,不是所有機器的空指標都是零(見此題目),如果要允許執行期間的空指標轉換,程式很可能需要在執行期間特別檢查數字是不是零. 如果是常數,編譯器可以在編譯期間就轉成適當的空指標。(參考 clc FAQ 5.18[3])
問:所以 printf("%p", NULL) 嚴格符合標準嗎?
答:否。這樣才嚴格符合標準:
printf("%p", (void*)NULL);注意 NULL 不是空指標,但 NULL 轉型成指標後一定是空指標。
問:如果每次用 NULL 都先轉型成適當的型態(如寫 (int*)...
Null (編程) | 魚的世界
補救null 的策略 | 魚的世界
Null (程式設計) | 魚的世界
Null (程式設計) | 魚的世界
安裝Null 驅動程式 | 魚的世界
補救null的策略 | 魚的世界
C 語言常見誤解指標空指標與NULL | 魚的世界
第24天Kotlin小學堂(13) | 魚的世界
「NULL」花蓮溪月眉大橋下游3公里處 2017/4/26 上午 12:00:00 出沒
NULL(Eleotrisoxycephalus)為塘鱧科魚類,於2017/4/26上午12:00:00 在花蓮溪月眉大橋下游3公里處發現,以下為該物種詳細資訊...
「NULL」五十溪茄苳林 2019/5/7 上午 12:00:00 出沒
NULL(Barbodessaranaorphoides)為鯉科魚類,於2019/5/7上午12:00:00 在五十溪茄苳林發現,以下為該物種詳細資訊:物種中文名...
「NULL」花蓮溪出海口 2017/10/3 上午 12:00:00 出沒
NULL(Chandaburuensis)為雙邊魚科魚類,於2017/10/3上午12:00:00 在花蓮溪出海口發現,以下為該物種詳細資訊:物種中文名稱...
「NULL」五十溪茄苳林 2019/8/22 上午 12:00:00 出沒
NULL(Barbodessaranaorphoides)為鯉科魚類,於2019/8/22上午12:00:00 在五十溪茄苳林發現,以下為該物種詳細資訊:物種中文...
「NULL」安農溪雙賢二號橋 2018/7/18 上午 12:00:00 出沒
NULL(Bryaninainana)為鰕虎科魚類,於2018/7/18上午12:00:00 在安農溪雙賢二號橋發現,以下為該物種詳細資訊:物種中文名稱...
「NULL」宜蘭河(宜蘭溪)中央大橋 2019/5/9 上午 12:00:00 出沒
NULL(Barbodessaranaorphoides)為鯉科魚類,於2019/5/9上午12:00:00 在宜蘭河(宜蘭溪)中央大橋發現,以下為該物種詳細資訊:...
「NULL」口隘溪圓潭橋 2019/4/16 上午 12:00:00 出沒
NULL(Herichthyscitrinellus)為麗魚科魚類,於2019/4/16上午12:00:00 在口隘溪圓潭橋發現,以下為該物種詳細資訊:物種中文...
「NULL」羅東溪歪仔歪橋 2018/11/9 上午 12:00:00 出沒
NULL(Barbodessaranaorphoides)為鯉科魚類,於2018/11/9上午12:00:00 在羅東溪歪仔歪橋發現,以下為該物種詳細資訊:物種中...
「NULL」宜蘭河(宜蘭溪)壯圍大橋 2019/2/14 上午 12:00:00 出沒
NULL(Barbodessaranaorphoides)為鯉科魚類,於2019/2/14上午12:00:00 在宜蘭河(宜蘭溪)壯圍大橋發現,以下為該物種詳細資訊...
「NULL」花蓮溪花蓮大橋(花蓮溪下游) 2019/3/23 上午 12:00:00 出沒
NULL(Sphagebranchusmindora)為蛇鰻科魚類,於2019/3/23上午12:00:00 在花蓮溪花蓮大橋(花蓮溪下游)發現,以下為該物種詳細...
「NULL」美濃溪旗南橋 2019/6/18 上午 12:00:00 出沒
NULL(Herichthyscitrinellus)為麗魚科魚類,於2019/6/18上午12:00:00 在美濃溪旗南橋發現,以下為該物種詳細資訊:物種中文...
「NULL」安農溪分洪堰人行橋 2018/11/9 上午 12:00:00 出沒
NULL(Barbodessaranaorphoides)為鯉科魚類,於2018/11/9上午12:00:00 在安農溪分洪堰人行橋發現,以下為該物種詳細資訊:物...
「NULL」大湖溪尚德橋 2019/2/13 上午 12:00:00 出沒
NULL(Rhinogobiusbrunneus)為鰕虎科魚類,於2019/2/13上午12:00:00 在大湖溪尚德橋發現,以下為該物種詳細資訊:物種中文名...
「NULL」五十溪茄苳林 2019/10/4 上午 12:00:00 出沒
NULL(Barbodessaranaorphoides)為鯉科魚類,於2019/10/4上午12:00:00 在五十溪茄苳林發現,以下為該物種詳細資訊:物種中文...
「NULL」口隘溪圓潭橋 2019/6/18 上午 12:00:00 出沒
NULL(Herichthyscitrinellus)為麗魚科魚類,於2019/6/18上午12:00:00 在口隘溪圓潭橋發現,以下為該物種詳細資訊:物種中文...