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_1
和parr_2
在遇到break语句时重新初始化为0的问题。
这里是调试步骤:
我真的不知道是什么导致它重新初始化......
只要按下F10(“跳过”),它就会直接进入switch
的结尾,并且没有任何可能导致break语句和switch case结束之间出现问题的事情。
对这样的事情有任何想法或经验吗?
顺便说一句,我使用c ++开发visual studio
答案 0 :(得分:2)
您实际上是在本地范围内重新声明这两个变量(注意int * parr_1是声明)。你需要重写为:
parr_1 = new int[num_arr_1];
parr_2 = new int[num_arr_2];