【发布时间】:2014-02-16 21:12:28
【问题描述】:
以我正在从事的项目中的以下示例为例。我要做的是从一个强者那里获取这个角色,并将其存储在变量 m 中。在这种情况下,mORi 是一个包含 L(5) 的字符串。我只对这个字符感兴趣(在这种情况下是 5)。我可以使用 m 捕获该字符,但是当我尝试将其转换为整数时,我的程序段错误。我假设我在某处超出了某个边界。一定缺少一些超级简单的东西。任何帮助,将不胜感激。
char m;
m = mORi[2]; //trying to get third char from string
int mber = atoi(m); // seg faults here
我在编译时收到以下警告:
warning: passing argument 1 of ‘atoi’ makes pointer from integer without a cast [enabled by default]
我不确定为什么它似乎假设它是一个整数而不是一个字符。
【问题讨论】:
-
atoi 需要一个指向字符串的指针作为输入参数
-
使用
atoi(&mORi[2]);它传递了一个字符串,这是atoi()需要的——见证警告。char被提升为int,但atoi()需要一个指针,因此您将int转换为不是您想要的指针。编译器确实试图提供帮助! -
所以我经常与指针/地址空间作斗争......这就像编程的青春期吗?只是随着时间而来?有没有关于它们的基本教程?
-
抱歉没有教程。但是你必须意识到指针并没有什么特别之处。它们不保存整数或字符,而是保存内存地址。如果要查看内存地址处的值,可以使用
*来获取指定的内存地址处的值。除此之外,它就像编程中的一切:练习。
标签: c