それで、私は「矛盾」、またはおそらくCの配列の理解のギャップを発見しました。以下は文字列を逆にする簡単なプログラムです。不一致は、コードのコメント内に記載されています。
#include <stdio.h>
#include <string.h>
void reverser(char to_bb[]){
printf("%s\n", to_bb[some_valid_number]); /* This results in a bus error */
int counter = strlen(to_bb); /* ^ Assume actual integer */
char reversed[counter];
int counter2 = 0;
for(--counter; counter >= 0; counter--){
reversed[counter2] = to_bb[counter]; /* This does not */
counter2++;
}
reversed[counter2] = '\0';
printf("The reversed: %s\n", reversed);
}
int main(){
char to_be_reversed[20];
puts("Enter the string to be reversed: ");
scanf("%19s", to_be_reversed);
reverser(to_be_reversed);
return 0;
}
printf();
要素を呼び出して別の配列にスワップしないのに、なぜバスエラーが発生するのですか?彼らは同じことを呼んでいませんか?