38963

38963



84


ROZDZIAŁ 11. FUNKCJE

jest rozmiar stosu programu). Cała zalwiwa polega na tym, aby umieć dostać się do odpowiedniego argumentu oraz poznać jego typ (używając funkcji printf. mogliśmy wpisać jako argument dowolny typ danych). Do tego celu możemy użyć wszystkich ciekawostek, zawartych w pliku nagłówkowym stdarg.h.

Załóżmy, że chcemy napisać prostą funkcję, która dajmy na to, mnoży wszystkie swoje argumenty (zakładamy, że argumenty są typu int). Przyjmujemy przy tym, że ostatni argument ł>ę<lzie 0. Będzie ona wyglądała tak:

#include <stdarg.h>

int mnoz (int pierwszy, ...)

{

va_list arg;

int iloczyn - 1, t;

va_start (arg, pierwszy);

for (t = pierwszy; t; t = va_arg(arg, int)) { iloczyn *■ t;

>

va_end (arg); return iloczyn;

>

vaJist oznacza specjalny typ danych, w którym przechowywane będą argumenty, przekazane do funkcji. Makropolecenie va_arg odczytuje kolejne argumenty i przekształca je do odpowiedniego typu danych. Na zakończenie używane jest makro va_end jest ono obowiązkowe!

Oczywiście, tak samo jak w przypadku funkcji printf() czy scanf(), argumenty nie muszą być takich samych typów. Rozważmy dla przykładu funkcję, podobną do printf(). ale znacznie uproszczoną:

Sinclude <stdarg.h>

void wypisz(const char ‘format, va_list arg; va_start (arg, format); for (; ‘format; ++format) { switch (‘format) {

printf("%d" , va printf("Xu" , va printf("%ld", va printf("%lu", va printf("%f- , va printf ("5Cx" . va printf("%X" , va printf("%s" , va putc(*format);


...) {


case case case case case case case case default >


>

va_end (arg);


_arg(arg, _arg(arg, _arg(arg, _arg(arg, _arg(arg, _arg(arg, _arg(arg, _arg(arg,


int)); break; unsigned)); break; int)); break; unsigned long)); break; double)); break; unsigned)); break; unsigned)); break; const char *)); break;




Wyszukiwarka

Podobne podstrony:
UNTITL60 17. Co to jest duża próba? Pr:yjeimiość nie polega na tym, ie nic ma się nic do roboty; pol
Zdjęcie0614 Efekt Bohra jest stosunkowo mniej ważnym fizjologicznie zjawiskiem i polega na tym. Ze s
UNTITL59 17. Co lo jest duża próba? Przyjemność nie polega na tym, ie ttń ma się nic do roboty; pole
0196 ,Kultura dyskusji polega na tym, by umieć ustąpić, gdy jest się w błędzie i me być niezno
CCF20091122017 zachowaniem jest nie tylko możliwe, jest ono koniecznością”1’. Problem nie polega na
Bezrobocie• Bezrobocie jest to zjawisko polegające na tym, ze część osób zdolnych do pracy i chcącyc
scan0014 Samo wykonanie oznaczenia jest podobne, jak w metodzie Lane-Eynona I i polega na tym, że do
3)    Funkcja optymalizacyjna- polega na tym, że rachunkowość tworzy podstawy do
76 ROZDZIAŁ 11. FUNKCJE Tworzenie funkcji Dobrze jest uczyć się na przykładach. Rozważmy następujący
84 2 Tablica 2.11. Funkcjonowanie konta 040 „Inwestycje w nieruchomości i prawa” Konto 040 „Inwest
78 ROZDZIAŁ 11. FUNKCJE Jeśli chcemy, aby przypisać zmiennej wartość, którą zwraca funkcja, należy
82 ROZDZIAŁ 11. FUNKCJE uhile (—n) { ++count; a ■ b; b - c; c ■ a + b;> return c;> i
28594 img106 Funkcja rozdzielcza (dystrybucyjna) normy polega na tym, że elementy językowe, występuj
W następnych rozdziałach zostaną opisane niektóre z wyżej wymienionych programów. Opisy są opracowan

więcej podobnych podstron