Jak mogę napisać (jeśli to w ogóle możliwe ...) funkcję, która pobiera nieznaną liczbę parametrów w C99 (typ powrotu jest stały)?Funkcja o nieznanej liczbie parametrów w C
Odpowiedz
Tak można to zrobić w C z użyciem co określa się mianem funkcji o zmiennej liczbie argumentów. Dostępne są na przykład standardowe funkcje printf()
i scanf()
.
Umieść wielokropek (trzy kropki) jako ostatni parametr, w którym chcesz ustawić "zmienną liczbę parametrów".
Aby uzyskać dostęp parametry obejmują <stdarg.h>
nagłówka:
#include <stdarg.h>
a potem masz specjalny rodzaj va_list
co daje listę argumentów przekazywanych, można użyć va_start
, va_arg
i va_end
makr do iteracji poprzez listę argumentów.
Na przykład
#include <stdarg.h>
int myfunc(int count, ...)
{
va_list list;
int j = 0;
va_start(list, count);
for(j=0; j<count; j++)
{
printf("%d", va_arg(list, int));
}
va_end(list);
return count;
}
Przykład połączenie:
myfunc(4, -9, 12, 43, 217);
pełny przykład można znaleźć w Wikipedia.
Parametr count
w tym przykładzie informuje wywoływaną funkcję o liczbie przekazanych argumentów. printf()
i scanf()
znaleźć to za pośrednictwem ciągu formatu, ale prosty argument count
może to zrobić też. Czasami w kodzie używana jest wartość wskaźnika, taka jak ujemna liczba całkowita lub wskaźnik zerowy (zobacz na przykład: execl()
).
Format z istniejącym przykład:
int yourFunc (int abc, ...) {
//your code here
}
To tylko prototyp. –
To już nie jest tylko prototyp, ale nie jest to pełne wyjaśnienie, jak pracować z argumentami o zmiennej długości. –
- 1. o zmiennej liczbie argumentów funkcja szablon bez parametrów formalnych
- 2. Dziwne zachowanie funkcji o zmiennej liczbie parametrów w C
- 3. Funkcja lub metoda z nieznaną liczbą parametrów
- 4. Dezynfekcja i Dodawanie postu meta w nieznanej liczbie pól
- 5. Liczba pustych komórek SQL w nieznanej liczbie kolumn
- 6. o zmiennej liczbie argumentów szablony o zmiennej liczbie argumentów szablonu
- 7. o zmiennej liczbie argumentów funkcja szablon z równych typów argumentów
- 8. Macierz o nieznanej długości w MATLAB?
- 9. Nagrywanie wideo o nieznanej liczbie klatek na sekundę za pomocą FFmpeg
- 10. funkcji o zmiennej liczbie argumentów argumentów kluczowych
- 11. C++ Template Funkcja instantiaion parametrów ukrytych
- 12. C funkcja ++ obiekty z wyraźnymi parametrów szablonu
- 13. Java funkcji o zmiennej liczbie argumentów Parametry
- 14. Generowanie losowej liczby o losowej liczbie liczbowej w Objective-C
- 15. Keras model.summary() Wynik - Zrozumienie liczbie parametrów
- 16. Wywołanie funkcji o zmiennej liczbie wyjściowej
- 17. Rekurencyjnie przechodzić przez NSDictionary o nieznanej strukturze
- 18. Wyróżnianie produktu o nieznanej funkcji - sympy
- 19. Inicjalizacja tablicy numpy o nieznanej długości
- 20. Uzyskaj wartość tablicy o nieznanej nazwie klucza
- 21. uzyskać długość tablicy ciągów o nieznanej długości
- 22. o zmiennej liczbie argumentów szablony typu odliczenie
- 23. iteruj po nieznanej strukturze c przekazanej z C#
- 24. Parametry ogólne o zmiennej liczbie argumentów
- 25. Jak zdobyć argumenty wiersza poleceń o nieznanej długości w Fortranie?
- 26. szablony o zmiennej liczbie argumentów: wytwarzanie krotki par sąsiednich elementów
- 27. Jak mogę wykonać operację AND na nieznanej liczbie zmiennych logicznych w postgresql?
- 28. C++: funkcja pass z dowolną liczbą parametrów jako parametr
- 29. SQL Funkcja bez parametrów wejściowych
- 30. Rozpakowywanie pakietu parametrów w języku C++
Masz na myśli funkcję wariadyczną? Jak 'printf'? Czy sprawdziłeś ''? –
Potatoswatter
Zdobądź książkę o C lub wyszukaj takie rzeczy w Internecie. –
możliwy duplikat [podania zmiennej liczby argumentów] (http://stackoverflow.com/questions/3836272/passing-variable-number-of-arguments) – Potatoswatter