遇到break语句时,指针变量重新初始化

时间:2017-09-23 17:05:55

标签: c++ pointers

    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的问题。

这里是调试步骤:

我真的不知道是什么导致它重新初始化......

只要按下F10(“跳过”),它就会直接进入switch的结尾,并且没有任何可能导致break语句和switch case结束之间出现问题的事情。

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

顺便说一句,我使用c ++开发visual studio

1 个答案:

答案 0 :(得分:2)

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

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