gpt4 book ai didi

c - 简单 C 程序中的总线错误

转载 作者:行者123 更新时间:2023-12-04 07:32:50 29 4
gpt4 key购买 nike

我正在尝试使用以下简单程序来反转 C 风格的字符串。

#include "stdio.h"
void reverse (char * str);
int main (int argc , char* argv[]){

char *str = "hello";
reverse(str);

return 0;

}

void reverse (char *str)
{
char *end = str;
char tmp;
if(str){
while(*end){
++end;

}
--end;
while(str < end){
tmp = *str;
*str++ = *end;
*end-- = tmp;

}
}
}

当我尝试运行上述程序时,我不明白为什么会出现“总线错误”。我正在使用 i686-apple-darwin10-gcc-4.2.1。谢谢

最佳答案

如果您将 char *str = "hello"; 更改为 char str[] = "hello"; 您的错误将消失,因为字符串文字存储在内存的只读部分并尝试修改 "hello" 可能会导致您的程序崩溃(就像在本例中一样)。

str 声明为 char[] 会将文字 "hello" 复制到一个非常量缓冲区中,您可以修改其内容的。

关于c - 简单 C 程序中的总线错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8949415/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com