Функция ellipses в c должна получить аргумент int перед тем, как - PullRequest
0 голосов
/ 26 апреля 2018

В соответствии с тем, что написано в объяснении в C - Аргументы переменных :

Определите функцию с последним параметром как эллипсы и как раз передellipses - это всегда int , который будет представлять количество аргументов.

Действительно ли необходимо отправлять int в функцию эллипса до ...?

Iвидел прототип функции printf(), и перед ... функция получает const char *, а int до ....

не существует.

1 Ответ

0 голосов
/ 26 апреля 2018

Нет, передача int не является ТРЕБОВАНИЕМ, как доказано printf().То, что вы видите в руководстве, относится к примерам func() и average(), представленным в руководстве (хотя пример func() не соответствует объяснению int, но пример average() соответствует).

Только вызывающая сторона знает, сколько значений параметров она передает (и какого типа (типов)), поэтому вам нужно спроектировать свои функции с переменными параметрами таким образом, чтобы вызывающая сторона указывала, сколько значений параметров на самом делепередаются (и, возможно, их типы).Есть два способа сделать это:

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

  • , передавая требуемое значение часового в качестве значения последнего аргумента.Затем функция просто использует все найденные аргументы, пока не достигнет этого часового.

...