Передача элемента символьного массива в функцию с изменением значения

Допустим есть символьный массив и функция:

void function(char a) {
    strcpy_s(a, "Something");
}

int main () {
    char mass[30];
    function();
    return 0;
}

Как мне передать символьный массив mass[30] в функцию, чтобы при вызове функции function() в массиве находилось слово "Something"?


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

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

Во-первых, вам надо изменить тип параметра функции:

function (char* a)

или function (char a[])

Потом при вызове функции передавайте массив в неё вот так:

void function(char a[]) {
    strcpy_s(a, "Something");
}

int main () {
    char mass[30];
    function(mass);
    return 0;
}

Пояснение

Добавление к типу * делает этот тип указателем. Советую просто найти литературу или просто поискать в гугле про "указатели в C++".

Но если вкратце - char a это тип "символ", а char* a это тип "указатель на символ" или "адрес ячейки в памяти, в которой лежит символ".

Когда мы работаем с массивами в Си и C++, мы можем указывать вместо char* char[]. Квадратные скобки семантически говорят программисту, что это не просто указатель, а указатель на начало массива. Со стороны программы запись char* и char[] совершенно одинакова. Проще говоря - это синтаксический сахар для лучшей читаемости программ.

Именно поэтому, когда нужно сделать функцию, которая что-то делает с переменной или массивом снаружи (то есть пришедшем в параметре), надо всегда делать тип параметра этой функции указателем или ссылкой.

Про ссылки расписывать не буду, ищи-читай на просторах интернета.

→ Ссылка