gpt4 book ai didi

c - 代码中的 EXC_BAD_ACCESS 来自 Cracking the coding interview

转载 作者:太空宇宙 更新时间:2023-11-04 08:44:20 25 4
gpt4 key购买 nike

我尝试使用 Cracking the coding interview 中的代码来运行反向字符串函数。我不知道代码是否错误或者我应该使用另一个 IDE(我为此使用了 Xcode 5.2)。我是 C 编程的新手,所以请解释一下。谢谢。

#include <stdio.h>

void reverse(char *str);

int main(int argc, const char * argv[])
{

char *str = "Hello, World!";
reverse(str);
printf("%s", 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;
}
}
}

最佳答案

这里的问题是您尝试修改字符串文字(str 指向它)并且字符串文字是常量(即只读,不可修改)。

试图修改常量是未定义的行为。未定义的行为可能有时似乎有效,但大多数时候它会导致运行时崩溃。

找到未定义行为(或其他可能不好的事情)的可能情况的一个好建议是启用更多警告。然后您应该收到有关将常量数组(所有字符串文字都是常量数组)分配给非常量指针的警告。

关于c - 代码中的 EXC_BAD_ACCESS 来自 Cracking the coding interview,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22276144/

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