Передача элемента символьного массива в функцию с изменением значения
Допустим есть символьный массив и функция:
void function(char a) {
strcpy_s(a, "Something");
}
int main () {
char mass[30];
function();
return 0;
}
Как мне передать символьный массив mass[30] в функцию, чтобы при вызове функции function() в массиве находилось слово "Something"?
Ответы (1 шт):
Во-первых, вам надо изменить тип параметра функции:
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[] совершенно одинакова. Проще говоря - это синтаксический сахар для лучшей читаемости программ.
Именно поэтому, когда нужно сделать функцию, которая что-то делает с переменной или массивом снаружи (то есть пришедшем в параметре), надо всегда делать тип параметра этой функции указателем или ссылкой.
Про ссылки расписывать не буду, ищи-читай на просторах интернета.