void reverse(char *str){ int i,j; char temp; for(i=0,j=strlen(str)-1; i<j; i++, j--){ temp = *(str + i); *(str + i) = *(str + j); *(str + j) = temp; printf("%c",*(str + j)); } }
int main (int argc, char const *argv[]) { char *str = "Shiv"; reverse(str); printf("%s",str); return 0; }
當我使用char * str =「Shiv」時,我的反轉函數(即str [i] = str [j])的交換部分中的行似乎不起作用,但是如果我將str聲明爲char str [] =「Shiv」,交換部分工作?這是什麼原因。我對這種行爲感到有點困惑,當我試圖運行該程序時,我總是收到消息「總線錯誤」。爲什麼*(str + i)= *(str + j)在這裏不起作用?
元問題...爲什麼一些在這個問題上有效的答案被否決?它們並不像答案最多的那樣完整,但它們也不一定是錯的。 – shoover 2009-10-13 20:05:16