我正在閱讀書籍Cracking the Coding interview(問題1.2)中的問題的解決方案。這裏的目標是在C中實現一個函數void revers(char* str)
,該函數反轉空終止字符串。在C中,指針的地址可以是0嗎?
該解決方案的代碼看起來是這樣的:
void reverse(char *str)
{
char* end=str;
char tmp;
if(str)
{
while(*end)
{
end++;
}
end--;
//code to reverse
}
}
這裏,str
包含地址吧?如果str
爲0
,if(str)
只會評估爲false
,對吧?
所以我說的是,str
將不會包含地址0x0000
,因此評估if(str)
到false
?
關於類似問題,我可以參考我的答案[這裏](http://stackoverflow.com/questions/17462299/initializing-variable-at-address-zero-in-c/17462496#17462496) ? – Nobilis
除非您自己將'str'作爲零傳遞給函數,否則不會。 –
運行這個:'char * p; printf(「%p」,p);'回答你的問題。 :) – ludesign