因此,我发现了一个“差异”——或者,更可能的是,我对 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();
导致总线错误,而调用元素将它们交换到不同的数组中却不会?他们不是叫同一个东西吗?