| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 533 人关注过本帖
标题:小错误,该怎么改?
只看楼主 加入收藏
泉水天堂
Rank: 1
等 级:新手上路
帖 子:28
专家分:0
注 册:2008-4-16
收藏
 问题点数:0 回复次数:2 
小错误,该怎么改?
#include<iostream.h>
typedef struct{
    int *data;
    int length;
}ST;
int creat(ST *t, int key){    //折半查找开始
    int low,mid,high;
    int flag;
    low=1;
    flag=0;
    high=t->length;
    while(low<=high){
        mid=(low+high)/2;
        if(key<t->data[mid])
            high=mid-1;
        else if(key>t->data[mid])
            high=mid+1;
        else
        {flag=mid;
        break;}
    }
    return flag;
}
void main(){
    int a[]={1,2,3,4,5,6,7,8,9,11};
    ST *p;
    int f;
    p->data=a;         //错误
    f=creat(p,3);
    cout<<f;
}
错误提示:local variable 'p' used without having been initialized
搜索更多相关主题的帖子: include return 
2008-12-12 18:36
koolism
Rank: 1
等 级:新手上路
帖 子:48
专家分:0
注 册:2007-3-22
收藏
得分:0 
void main(){
    int a[]={1,2,3,4,5,6,7,8,9,11};
    ST *p = new ST;
    int f;
    p->data=a;         //错误
    f=creat(p,3);
    cout<<f;
    delete p;
}

不知道痛苦,不知道饥饿,不知道休息,只知道勇往无前...
2008-12-12 19:52
snowstorm
Rank: 1
等 级:新手上路
帖 子:18
专家分:0
注 册:2008-10-12
收藏
得分:0 
#include<iostream.h>
typedef struct{
    int *data;
    int length;
}ST;
int creat(ST *t, int key)
{   
    //折半查找
   int low,mid,high;
    int flag;
    low=1;
    flag=0;
    high=t->length;
    while(low<=high)
   {
        mid=(low+high)/2;
        if(key<t->data[mid])
            high=mid-1;
        else if(key>t->data[mid])
            low = mid +1; //这儿应该是low,你可能马虎了
        else
        {
            flag=mid;
            break;
        }
    }
    return flag;
}
void main(){
    int a[]={1,2,3,4,5,6,7,8,9,11};
    ST *p = new ST; //你的错误是指针变量没有被初始化,
                   //任何指针变量刚被创建时不会自动成为NULL指针,它的缺省值是随机的,它会乱指一气。
                   //你这样就修改了内存,引起错误
    int f;
    p->data=a;
   p->length = sizeof(a) / sizeof(int); //你也没有将数组的长度计算出来
    f=creat(p,3);
    cout<<f;
    delete p;//释放指针
}
以上仅供参考哈

[[it] 本帖最后由 snowstorm 于 2008-12-12 20:07 编辑 [/it]]

坚持就是胜利 我要吃高档面包
2008-12-12 20:03
快速回复:小错误,该怎么改?
数据加载中...
 
   



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

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