gpt4 book ai didi

c - 我不知道为什么这段代码会给我带来读取访问冲突。理论上,取消引用指针并减去另一个字符应该可行

转载 作者:行者123 更新时间:2023-11-30 20:58:22 24 4
gpt4 key购买 nike

我不知道为什么这不起作用。代码中的 *c 有问题charToInt函数但应该是c中的合法语句。至少我是这么认为的。我很高兴能在这里学到新东西。

int charToint(char *c) {
return *c - '0';
}

int main(void) {
char c = '3';
printf("%d\n", charToint(c));
{

最佳答案

您正在将 char 传递给需要 char * 的函数。你的编译器应该警告你这一点。然后,该 char 的值被解释为指针值并取消引用。取消引用无效指针会调用未定义的行为,在这种情况下会导致程序崩溃。

该函数最终尝试使用 char,因此将其更改为接受 char:

int charToint(char c) {
return c - '0';
}

或者,您可以保留函数原样并向其传递一个指针:

printf("%d\n", charToint(&c));

关于c - 我不知道为什么这段代码会给我带来读取访问冲突。理论上,取消引用指针并减去另一个字符应该可行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52940515/

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