2017-09-23 69 views
0
case 1: 
    { 
     cout << "Enter two array size" << endl; 

     cin >> num_arr_1; //size of array 
     cin >> num_arr_2; 

     int *parr_1 = new int[num_arr_1]; 
     int *parr_2 = new int[num_arr_2]; 
     //these two ptr variables had been initialized to NULL when declared 

     for (int i = 0; i < num_arr_1; i++) 
      cin >> *(parr_1 + i); 

     for (int i = 0; i < num_arr_2; i++) 
      cin >> *(parr_2 + i);  

     ifarray = 1; 
     break; //where problems all begin! 
    } 

正如标题所说,我在与指针变量的问题parr_1parr_2当它遇到break语句被重新初始化为0重新初始化。指针变量时遇到break语句

这里的调试步骤:

我真的不知道是什么原因引起的重新初始化...

只要我按F10(“跳过”)它向右走在switch的情况下结束,并且在断开语句和开关情况结束之间没有任何可能导致麻烦的事情。

有任何想法或经验这样的事情?

BTW我发展与使用C视觉工作室++

+0

你打算在'break'之后使用那些因为它们是在本地范围内声明的吗? – Stefan

+0

您在休息时有内存泄漏。为什么你使用局部变量?为什么你使用新的而不是std :: vector? – 2017-09-23 17:08:57

+0

ㄴmanni66 这就像是在学校的第一年,我对C++知之甚少......这对我来说是新的东西!虽然 –

回答

2

在本地范围内(注意INT * parr_1是声明)你实际上是重新声明这两个变量。你需要重写为:

 parr_1 = new int[num_arr_1]; 
    parr_2 = new int[num_arr_2]; 
+0

哦,哇,我刚刚意识到该死......我在变量中使用了与主函数相同的名称。真是太遗憾了,谢谢! –

+0

这些行已经在我声明的不同功能。 我在重写它们时犯了错误 –

+0

非常好!在代码片段中发现这点并不明显! – Christophe