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" として宣言すると、スワップ部分は機能しますか?この理由は何ですか。プログラムを実行しようとすると、「バスエラー」というメッセージが表示され続けました。