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",交换部分有效吗?这是什么原因。我对这种行为有点困惑,当我尝试运行程序时,我不断收到“总线错误”的消息。