| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 4291 人关注过本帖
标题:Error:lvalue required as increment operand,这个是什么问题?谁帮忙看下 ...
只看楼主 加入收藏
计算机之祖
Rank: 2
等 级:论坛游民
帖 子:63
专家分:17
注 册:2015-9-1
收藏
得分:0 
回复 4楼 jklqwe111
图片附件: 游客没有浏览图片的权限,请 登录注册

这样可以编译通过了
但是运行结果有问题
计算出的字符串长度恒定为93了
2015-09-07 22:26
林月儿
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:湖南
等 级:版主
威 望:138
帖 子:2277
专家分:10647
注 册:2015-3-19
收藏
得分:3 
*(str+len)!='\0'?

剑栈风樯各苦辛,别时冰雪到时春
2015-09-07 22:27
计算机之祖
Rank: 2
等 级:论坛游民
帖 子:63
专家分:17
注 册:2015-9-1
收藏
得分:0 
回复 10楼 诸葛欧阳
不是吧
这里需要取指针对应地址的内容啊
所以需要*str吧
2015-09-07 22:29
计算机之祖
Rank: 2
等 级:论坛游民
帖 子:63
专家分:17
注 册:2015-9-1
收藏
得分:0 
回复 12楼 林月儿
刚试了,可以通过编译和运行
但是运行结果有问题

楼上我刚刚截了个图
2015-09-07 22:30
诸葛欧阳
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:流年
等 级:贵宾
威 望:82
帖 子:2790
专家分:14619
注 册:2014-10-16
收藏
得分:0 
以下是引用计算机之祖在2015-9-7 22:29:31的发言:

不是吧
这里需要取指针对应地址的内容啊
所以需要*str吧

取内容应该判断字符串结尾标志\0不是0

一片落叶掉进了回忆的流年。
2015-09-07 22:30
计算机之祖
Rank: 2
等 级:论坛游民
帖 子:63
专家分:17
注 册:2015-9-1
收藏
得分:0 
回复 15楼 诸葛欧阳
while(*(str+len)!='\0')
这样应该可以了

但是还是搞不明白,为啥++就不行了
2015-09-07 22:38
jklqwe111
Rank: 9Rank: 9Rank: 9
等 级:贵宾
威 望:35
帖 子:336
专家分:1135
注 册:2014-4-13
收藏
得分:3 
++ --这些操作符,应该尽量少用,因为它有时很容易产生歧义,此例中str++是一种错用,++ --是应该作用于变量,而数组名是常指针 是常量,这样是不行的。
2015-09-07 22:40
计算机之祖
Rank: 2
等 级:论坛游民
帖 子:63
专家分:17
注 册:2015-9-1
收藏
得分:0 
回复 4楼 jklqwe111
while(*(str+len)!='\0')--》改成这个可以了
前面我弄错了,不好意思,对C语言不熟悉,罪过
最后判断应该是结束字符‘\0’
2015-09-07 22:41
计算机之祖
Rank: 2
等 级:论坛游民
帖 子:63
专家分:17
注 册:2015-9-1
收藏
得分:0 
回复 17楼 jklqwe111
#include<stdio.h>
main()
{
    int len;                                    /*定义len为基本整型变量*/
    char *str[100];                            /*定义字符型指针数组str*/
    printf("please input a string:\n");
    gets(str);                                /*gets函数将输入的字符串放入数组str中*/
    len=length(str);                            /*调用length函数*/
    printf("%d\n",len);                        /*将结果输出*/
}
int length(char *p)                            /*自定义函数length*/
{
    int n=0;                                    /*定义变量n为基本整型*/
    while(*p!='\0')                            /*当指针未指到字符串结束标志时执行循环体语句*/
    {
        n++;                                    /*长度加1*/
        p++;                                    /*指针向后移*/
    }
    return n;                                /*返回最终长度*/
}
但是这样为啥就可以了呢?
虽然他定义了一个函数,用指针p去操作
但是最终在main函数中,str还是会传给int length(char *p)    这个函数,进行里面的++操作的
为啥这样就可以了?
2015-09-07 22:51
jklqwe111
Rank: 9Rank: 9Rank: 9
等 级:贵宾
威 望:35
帖 子:336
专家分:1135
注 册:2014-4-13
收藏
得分:0 
回复 19楼 计算机之祖
n++    p++ 中n,p 都是变量,所以 n++    p++ 可以,至于str传参给p就相当于p=str,和对普通变量赋值一样道理,如n=7,n的变量性质不变,要准确的理解,可再看一看变量的概念,搞清楚变量作为左值以及在表达式中有什么不同。
2015-09-07 23:13
快速回复:Error:lvalue required as increment operand,这个是什么问题?谁帮 ...
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.021595 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved