c语言中atoi函数的疑问

之前我在xcode中使用c语言atoi函数时,能转换成对应的整数,但当在dev c++
中运行,却转换出错。我想知道这是为什么呢?

先说一下之前没贴代码,之前去青岛三天,去的那天晚上写的问题,回来两天是考试,很抱歉没贴代码,我的错。
下面是正题:
今晚我又看了一遍代码,发现之前忽略了atoi函数的参数是字符串,所以之前的代码是
屏幕快照 2017-06-15 20.14.15
屏幕快照 2017-06-15 20.14.23
clipboard.png

结果是
clipboard.png

在xcode中没有出错,而在dev c++中出错,结果为
错误源码.PNG
clipboard.png
错误结果.PNG
clipboard.png

就这样让我摸不着头脑,今晚我改成了
修改后的源码.PNG
clipboard.png

结果正确
现在还有个疑问求大家解答:
对于单个字符t1,在atoi中,atoi(t1)会报错,而atoi(&t1)不会报错,我想问’&‘的作用是什么,请指教。

阅读 5.5k
1 个回答

其实atoi()的参数为const char *str,也就是一个指向字符的指针,而t1显然不是一个指针,所以atoi(t1)会报错。
而&为取地址操作,&t1的值就是t1所在的地址的值,相当于一个指向t1的指针的值,所以atoi(&t1)是合法的。
作为参数传递时,C中的字符串和字符数组实际实现为传递其指向第一个字符的指针

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进