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