我不知道为什么这是代码让我违反了读取访问权限。取消引用指针并减去另一个 char 应该在理论上有效
I am at a loss for why this is code is giving me a read acess violation. dereferencing pointer and subtracting another char should work in Theory
我不知道为什么这不起作用。代码中的 *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 有问题 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));