clion关于指针使用不当发生的错误 -var-create: unable to create variable object


在实验课上,在做散列表的我又一次遇到了“无法创建变量对象的问题”。

报错如下:

Process finished with exit code -1073741819 (0xC0000005)

下面是修改后的完整代码,出现问题的地方我会用注释来解释。

 1 #include<iostream>
 2 using namespace std;
 3 
 4 int H(int k,int n){
 5     return k%n;
 6 }
 7 int HashSearch1(int k, int *&p,int n,int ht[]){//此处使用了&p来引用主函数中的指针p
 8     int i, j;
 9     j = H(k,n);                                
10     i = j;                                    
11     if (ht[i] == k) {//查找成功
12         *p = i;
13         return 1;
14     }
15     if(ht[i]==0){//插入成功
16         ht[i] = k;
17         *p = i;
18         return 0;
19     }
20 
21     i = (i + 1) % n;//向后探
22     while(i!=j){
23         if(ht[i]==k){//查找成功
24             *p = i;
25             return 1;
26         }
27         if(ht[i]==0){//插入成功
28             ht[i] = k;
29             *p = i;
30             return 0;
31         }else{
32             i = (i + 1) % n;
33         }
34     }
35     return -1;//表满
36 }
37 
38 int main(){
39     int att,data,now=0;
40     int ht[100]={0},n=0;
41     int *p=&now;//又是你呀,指针大哥。由于之前 int *p;是野指针并没有用变量来初始化,会导致它指向莫名其妙的地方,从而使程序崩溃。
42     cout<<"输入闭散列表的大小"<<endl;
43     cin>>n;
44     cout<<"输入查找值"<<endl;
45     cin>>data;
46     while(data!=0){
47         att=HashSearch1(data,p,n,ht);
48         if(att==1){
49             cout<<"查找成功"<<endl;
50         }
51         if(att==0){
52             cout<<"查找失败,插入查找值"<<endl;
53         }
54         if(att==-1){
55             cout<<"溢出"<<endl;
56         }
57         cin>>data;
58     }
59 
60     return 0;
61 }

类似的见我的另一篇博客(2条消息) 关于函数传参的再理解(含引用)_secant007的博客-CSDN博客

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM