Как в другой функции вывести значение из первой функции в Си

У меня есть функция которая требует: Массив с символами, конечный массив (пустой), и числовая переменная. В массиве с символами состоит слово, функция считывает посимвольно слово и удаляет одинаковые символы рядом (abbca -> abca), а числовая переменная считывает количество символов в конечном слове. В моём коде используются две таких функции и мне нужно сравнивать две конечные переменные, но при выводе их на экран, они равны нуль, а должны, сумме кол-ва символов.

void FuncKeyword(char array[], char highlighted_word[], int count) {
    for(int index = 0; index < MAXOP && array[index] != 0; index++) 
    {
        if (index > 0 && array[index] == array[index-1]) 
        { 
            continue;
        }
        else 
        { 
            highlighted_word[count] = array[index]; 
            count++;
        }
    }
    printf("%d", count);
}

Мне нужно вывести на экран при помощи второго массива значение count из первого массива. Мне подсказали что это можно сделать при помощи поинтов, но я не знаю как, кто поможет?

Вот код что написан у меня:

void FuncKeyword(char array[], char highlighted_word[], int count) {
    for(int index = 0; index < MAXOP && array[index] != 0; index++) 
    {
        if (index > 0 && array[index] == array[index-1]) 
        { 
            continue;
        }
        else 
        { 
            highlighted_word[count] = array[index]; 
            count++;
        }
    }
    printf("%d", count);
}

int main()
{    
    //scan_words();
    char TEST_ARRAY[] = {"qweqq"};
    char word1[MAXOP]
    int index1 = 0;
    FuncKeyword(TEST_ARRAY, word1, index1);

    printf(" %d ", index1);
}

Я хочу получить из принта значение "5", но получаю значение "0".


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

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

Вы передаёте аргумент index по значению, а не по ссылке, так что внутри функции получается копия значения извне, как бы локальная переменная, и снаружи про её изменения ничего не известно. Почитайте о передаче аргументов

Или передавайте по указателю (*), (в C++ можно по ссылке &), или, если это главный результат работы функции, сделайте её тип int вместо void, и возвращайте return-ом

→ Ссылка
Автор решения: Calcium-X

Вот исправленный код:

void FuncKeyword(char array[], char highlighted_word[], int *countIndex) {
    int count = 0;
    for(int index = 0; index < MAXOP && array[index] != 0; index++) 
    {
        if (index > 0 && array[index] == array[index-1]) 
        { 
            continue;
        }
        else 
        { 
            highlighted_word[count] = array[index]; 
            count++;
        }
    }
    *countIndex = count;
}
→ Ссылка