我見過這用C做過:「12345」+ 2在C中做了什麼?
#define MY_STRING "12345"
...
#define SOMETHING (MY_STRING + 2)
什麼做一些事情得到擴展到,在這裏?這是否合法?還是他們的意思是這個?:
#define SOMETHING (MY_STRING[2])
我見過這用C做過:「12345」+ 2在C中做了什麼?
#define MY_STRING "12345"
...
#define SOMETHING (MY_STRING + 2)
什麼做一些事情得到擴展到,在這裏?這是否合法?還是他們的意思是這個?:
#define SOMETHING (MY_STRING[2])
當你有一個數組或指針,p+x
相當於&p[x]
。所以MY_STRING + 2
相當於&MY_STRING[2]
:它產生字符串中第三個字符的地址。
注意當您添加0 MY_STRING + 0
相同&MY_STRING[0]
會發生什麼,這兩者是相同的,因爲一個字符串參考書寫簡單MY_STRING
無非是一個指針更字符串中的第一個字符。令人高興的是,那麼身份操作「加0」是一個空操作。考慮這種心理單元測試,我們可以用它來檢查我們對於+
意味着什麼是正確的想法。
我想我的掛斷是我不知道引用的字符串是否等於字符數組,至少在語法上。謝謝。 +1。 – Joe 2010-08-25 22:34:16
那麼你沒有編譯器? – rook 2010-08-25 22:22:13
有時候要求堆棧溢出比在編譯器上試用更快...... – Joe 2010-08-25 22:32:40
更快? http://codepad.org/VRZvcphU帶我走了60秒... – bta 2010-08-25 22:39:51