首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

不明白,求大神解答,该如何解决

2013-07-01 
不明白,求大神解答int CreateBiTree(BiTree *T, char* S, int *idx)这是函数原型;CreateBiTree(&((*T)-l

不明白,求大神解答
int CreateBiTree(BiTree *T, char* S, int *idx);这是函数原型;
CreateBiTree(&((*T)->lchild),S,&(++(*idx)));递归调用;
error #2088: Lvalue required.
Type error in argument 3 to 'CreateBiTree'; expected 'int *' but found 'int'.
这都是指向第二行的错误,求解答
vc++可以通过,但是pelles c报错,上面就是pelles c编译时候的问题 C 编译器
[解决办法]
&(++(*idx))  这个是int? 取地址后还是int?那你强制转pointer试一试
[解决办法]

引用:
Quote: 引用:

Quote: 引用:

&(++(*idx))  这个是int? 取地址后还是int?那你强制转pointer试一试

我说id是地址……

不对,是指针


我说的是从编译器的角度  看你贴的报错信息
[解决办法]
看起来是编译器的毛病,代码没问题,试试这样编译器认吗。

++*idx; CreateBiTree(&((*T)->lchild),S,idx);
++*idx; CreateBiTree(&((*T)->rchild),S,idx);

[解决办法]
引用:
Quote: 引用:

CreateBiTree(&((*T)->lchild),S,&(++(*idx)));
第三个参数:
++(*idx)是一个什么你清楚么,
不清楚的话取地址又是什么呢

id是int型指针,*id代表字符串的第几个字符


先看看你自己的回答,莫名其妙的;

再看你的编译器报的错:
error #2088: Lvalue required.
Type error in argument 3 to 'CreateBiTree'; expected 'int *' but found 'int'.

需要左值,期望int*类型,但是传进去的确是int类型。
为什么呢?
id是int指针,*id这个指针指向的值。
++(*id)然后把这个值自增1;
这个地方标准C是否对这个值有定义,一定是左值吗?
vc对标准c的支持度不到90%的。vc能编译通过不代表你的代码没有问题。尤其是++和--这样的。

使用gcc也无法编译通过你的代码,报错类似。

如果自己都不确定的东西,最好不要写。
要达到你的目的,参考10楼的规范写法。

热点排行