0
在下面的代碼中,我做錯了什麼?我在eclipse中運行代碼並使用MinGW C編譯器。當我運行它時,eclipse停止響應。當我調試代碼時,它斷線複製指針字符不按預期方式工作
*start = *end;
我在調試模式下驗證了* start和* end的值,並且none爲null。
void func1(char *str)
{
char *end, *start;
end = start = str;
char tmp;
if (str)
{
while (*end)
++end;
--end;
while (start < end)
{
tmp = *start;
*start = *end;
*end = tmp;
start++;
end--;
}
}
}
任何提示/想法?
可能是很多東西,也許你正在使用字符串?提供[SSCCE](http://www.sscce.org/)將使我們能夠更好地爲您提供幫助。 –
這幾乎可以肯定是由於傳入只讀字符串文字,但是您還有另一個問題:如果字符串是空字符串'「」',那麼'--end'的遞減在開始之前放置'end'的字符串,這在技術上是未定義行爲,儘管這不太可能導致任何實際問題。 –
你怎麼知道'--end'是合法的? –