c - 我不知道为什么这是代码给我一个读取访问冲突。取消引用指针并减去另一个字符应该在理论上起作用
问题描述
我不知道为什么这不起作用。该代码在 charToInt 函数中的 *c 存在问题,但应该是 c 中的合法声明。至少我是这么认为的。我很高兴能在这里学到新东西。
int charToint(char *c) {
return *c - '0';
}
int main(void) {
char c = '3';
printf("%d\n", charToint(c));
{
解决方案
您将 a 传递给char
需要 a 的函数char *
。你的编译器应该已经警告你了。然后将其值char
解释为指针值并取消引用。取消引用无效指针会调用未定义的行为,在这种情况下会导致程序崩溃。
该函数最终尝试使用 a char
,因此将其更改为接受 a char
:
int charToint(char c) {
return c - '0';
}
或者,您可以保留函数并传递一个指针:
printf("%d\n", charToint(&c));
推荐阅读
- python-3.x - 硒与 Python。“蓝牙:bluetooth_adapter_winrt.cc:1076”。错误
- c# - 如何在 linux 中链接 liblept 和 libtesseract 文件
- swift - (自动)在 tabbar1 中更新数组后,在 Tableview(tabbar2) 上重新加载数据(无需更改 tabbars)
- java - 致命异常:Firebase-Messaging-Intent-Handle — com.google.android.youtube — lang.NoClassDefFoundError: aewt
- hyperledger-fabric - 如何很好地格式化(“漂亮的打印”)织物链码查询输出?
- python - 无法使用 Matplotlib 和 Python 在 x 轴上随时间绘制直方图
- python - python中的-805306369(0xCFFFFFFF)错误我该怎么办
- sequelize.js - 为什么在 CamelCase 中会生成foreignKey?
- git - git子模块分支克隆
- python - 将两个数据框绘制到单个图上的最简单方法是什么