Почему в функцию передаётся TCHAR(&name)[100], а не TCHAR *name?
void CreateName(TCHAR(&name)[100], int number)
{
_stprintf_s(name, TEXT("Your number: %d"), number);
}
Ответ
В документации Майкрософт функция _stprintf_s является макроопределением следующего вида
#define _stprintf_s swprintf_s
В свою очередь функция swprintf_s определяется как
template
То есть это шаблонная функция шаблонным параметром которой является размер массива. Поэтому массив, используемый в качестве аргумента передается функции по ссылке, чтобы функция могла определить размер массива.
Соответственно и функция CreateName объявляется свой первый параметр как ссылку на массив, который она далее передает в функцию _stprintf_s. Если бы она не принимала массив по ссылке, то не смогла бы вызвать функцию _stprintf_s
Для вызова функции CreateName нужно просто указать имя массива в качестве аргумента, как это делает в свою очередь сама функция при вызове функции _stprintf_s
Комментариев нет:
Отправить комментарий