指针变量在遇到断裂语句时重新初始化

Pointer variable reinitialized when encountered break statement

本文关键字:初始化 语句 变量 遇到 指针      更新时间:2023-10-16
    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案例的末端,并且没有任何可能在断路语句和交换机结束之间造成麻烦。

有这样的想法或经验?

btw i使用C

使用Visual Studio开发

您实际上是在本地范围中重新计入两个变量(note int * parr_1是声明)。您需要重写为:

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