鱼C论坛

 找回密码
 立即注册
查看: 4701|回复: 7

关于指针类型不对的问题~~

[复制链接]
发表于 2013-8-15 21:18:18 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
下面的例子。。。。为什么用VC++编译不能通过。。提示   error C2440: “=”: 无法从“const char *”转换为“int”
可是在unix系统下确能编译通过。。而且运行无误。。。。。

要怎么才能在VC++中顺利使用呢??    求教育~~~~~
  1. #include "stdafx.h"
  2. #include "ctype.h"
  3. int str2int(const char* str,const char** q)
  4. {
  5.         int r=0;
  6.         while(isdigit(*str))
  7.         {
  8.                 r = r*10+(str-'0');   //error C2440: “=”: 无法从“const char *”转换为“int”
  9.                 ++str;
  10.         }
  11.         *q = str;
  12.         return r;
  13. }

  14. int main()
  15. {
  16.         const char* p=NULL;
  17.         int n =str2int("3926abxys",&p);
  18.         printf("n=%d, p=%s \n",n,p);
  19.         return 0;
  20. }
复制代码


小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2013-8-15 22:12:12 | 显示全部楼层
提示很明显, r = r*10+(str-'0'),这句左值为int型,而str是字符指针类型,'0'又是字符型。字符型和int型相互运算没有问题,指针型数据夹在里面,即便运算不报错,那结果也不是你想要的了,把str改成*str
至于为何unix下可以,我也不知,难不成编译器相当牛掰智能?
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2013-8-16 00:32:28 | 显示全部楼层
新手, 求9   str-'0'是什么意思???是3926abxys-'0'????
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2013-8-16 09:45:03 | 显示全部楼层
有收获,谢谢{:1_1:}
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2013-8-16 13:56:35 | 显示全部楼层

就是没意思
按LZ的本意,应该是*str-'0',就是把字符型的数字转为数字型数字。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-8-16 19:42:27 | 显示全部楼层
确实是我的疏忽了。。。哎。。把那个*号给忘记了。。  太粗心了。。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2013-8-16 20:52:17 | 显示全部楼层

有收获,谢谢
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2013-8-16 21:32:01 | 显示全部楼层

有收获,谢谢
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-11-5 15:11

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表