2017-09-23 64 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