Closed. This question is off-topic。它当前不接受答案。
想改善这个问题吗? Update the question,所以它是on-topic,用于堆栈溢出。
2年前关闭。
我不知道为什么这行不通。代码中的* c有问题
charToInt函数,但应为c中的法律声明。至少我如此认为。我很高兴在这里学到新东西。
或者,您可以将函数保留为它,并向其传递一个指针:
想改善这个问题吗? Update the question,所以它是on-topic,用于堆栈溢出。
2年前关闭。
我不知道为什么这行不通。代码中的* 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/