#include<cstdio>
#include<stdlib.h>
int main()
{
char* ptr=NULL;
printf("%s",ptr);
return 0;
}
它將輸出(null)作爲輸出。 以上是示例代碼。在實際代碼中,我將char *作爲函數的返回值,我希望打印字符串以進行日誌記錄。但是,NULL也是該函數的有效返回值,所以我想知道在打印字符串之前是否需要空檢查?下面的C代碼是否安全?
char* ptr=someFuncion();
// do i need the following if statement?
if(ptr!=NULL)
{
printf("%s",ptr);
}
我只是想確保輸出將是相同的,即若ptr = NULL,則輸出應爲(空)的所有平臺和編譯器和上面的代碼(不if語句)不會對任何崩潰C標準兼容平臺。
總之,上面的代碼(沒有if語句)標準是否兼容?
感謝您的幫助和耐心:)
問候
拉利
什麼是''頭文件提供給您的代碼?您的代碼通過將空指針傳遞給不期望的函數來調用未定義的行爲。任何事情都可能發生 - 主要包括可能無意中發生的事情。 –
2010-03-30 13:50:03
好吧,我明白了。謝謝大家對這樣的「實時」幫助:)) – ghayalcoder 2010-03-30 14:17:02