Как вывести переменную k?

Есть два кода в одном эта переменная выводится нормально в другом нет(почему?) алгоритм вроде один и тот же.

int* masa, * masb = NULL;
int cc , rr, k;

cout << "enter size of array" << endl << "rr: ";
cin >> rr;
cout << endl << "cc: ";
cin >> cc;
masa = (int*)malloc(rr * cc * sizeof(int));
for (int i = 0; i < rr; i++)
{
    for (int j = 0; j < cc; j++)
    {
        *(masa + i * rr + j) = rand() % 20;
    }
}
for (int i = 0; i < rr; i++)
{
    for (int j = 0; j < cc; j++)
    {
        cout << *(masa+ i * rr + j) << "\t";
    }
    cout << endl;
}
//утворення масива що більший за 2 
cout << endl;
for (int i = 0,k = 0; i < rr; i++)
    for (int j = 0; j < cc; j++)
    {
        
        if (*(masa + i * rr + j) > 2)
        {
            masb = (int*)realloc(masb, (k + 1) * sizeof(int));


            masb[k] = *(masa + i * rr + j);


            k++;
        }
        
    }

    
cout << k; 

Вот другой код в котором все работет

int* a; // Вказівник на масив, початкова адреса для зберігання елементів масиву
int* b = NULL; // Вказівник на масив, розмір якого не відомо завчасно
int i, j, rr, cc, k;
printf("Введіть кількість рядків масиву n \n"); scanf(" %d", &rr);
printf("Введіть кількість стовпчиків масиву m \n"); scanf(" %d", &cc);
a = (int*)malloc(rr * cc * sizeof(int)); // Виділення пам'яті під масив
printf("Введня елементів масиву \n");
for (i = 0; i < rr; i++)
    for (j = 0; j < cc; j++)
        *(a + i * cc + j) = rand() % 10; //або з клавіатури scanf("%d", a+i*cc+j);

printf("Друк елементів масиву \n");
for (i = 0; i < rr; i++) {
    for (j = 0; j < cc; j++)
        printf("%6d", *(a + i * cc + j));
    printf("\n");
}
for (i = 0, k = 0; i < rr; i++)
    for (j = 0; j < cc; j++)
    {
        if (*(a + i * cc + j) > 2)
        {
            b = (int*)realloc(b, (k + 1) * sizeof(int)); // Вказівник на новий

            

                b[k] = *(a + i * cc + j);
            k++;
        }
    }
cout << k;

Ответы (1 шт):

Автор решения: Harry

Вот этот код

for (int i = 0,k = 0; i < rr; i++)

объявляет переменные i и k как локальные для тела цикла. Чем, собственно, все и поясняется. k в цикле и k после цикла — две разные переменные...

→ Ссылка