注册 登录
编程论坛 C++教室

cstring 问题

mfkblue 发布于 2012-11-27 23:25, 400 次点击
CString COrder5(CString c,int y)//y是CString c的长度.
{
    int x;   
    for (x=0;x<y;x++)
    {
        if ((c[x])>(c[x+1]))  //是不是从大到小排好序的;
            continue;
        else break;
    }
    if (x==y)
        return c;

}
弹出内存不能读,内存不能写,这是为什么?
6 回复
#2
w5277050902012-11-27 23:34
没用过。。。不懂。。。
#3
w5277050902012-11-27 23:35
好像这个x==y是不对的吧。。。。。。。。
#4
mfkblue2012-11-28 01:02
x是循环了多少次,y是长度,循环跑完刚好x==y,那c[x+1]在最后一次可能会访问到未知的地方,但问题好像不是那里。
#5
linan032012-11-28 06:55
回复 楼主 mfkblue

是函数没有返回值的问题吧。

根据你写的代码,比如cstring 长度为6 ,x从0开始,c[0]和c[1]比较,如果c[0]<c[1]的话,岂不是直接跳出循环,那么x永远也不会等于y了,这个函数就没有返回值了吧。


#6
mfkblue2012-11-28 19:10
我还没写完这个函数,后面会处理这个问题,就算直接返回c一样弹内存不能读,内存不能写.
#7
a6359580002012-11-29 09:37
for (x=0;x<y;x++)
循环中x<y-1才对啊
1