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