ANSI C 3

ANSI C 3



DODATEK A PRZEWODNIK JĘZYKA C____-

tablicą o pięciu elementach, z których każdy jest tablicą o siedmiu elementach całkowitych. Każde z wyrażeń: x3d, x3d[i], x3d[i][j] oraz x3d[i][j][k] ma sens w wyrażeniach. Pierwsze trzy są typu „tablica”, ostatnie zaś jest typu int. Dokładniej, x3d[i][j] jest tablicą złożoną z siedmiu elementów całkowitych, a x3d[i] jest tablicą złożoną z pięciu tablic o siedmiu elementach całkowitych.

Operację indeksowania tablicy definiuje się w ten sposób, że E1[E2] jest identyczne z *(E1+E2). Zatem, mimo asymetrycznego wyglądu, indeksowanie jest operacją przemienną. Zgodnie z regułami przekształceń, odnoszącymi się do operatora + i do tablic (p. A6.6, A7.1, A7.7), jeśli E1 jest tablicą, a E2 jest całkowite, to E1[E2] wyznacza element o numerze E2 w tablicy E1.

W naszym przykładzie x3d[i][j][k] jest równoważne z *(x3d[i][j] + k). Pierwsze podwyrażenie x3d[i][j] jest przekształcane (zgodnie z p. A7.1) do typu „wskaźnik do tablicy o elementach całkowitych”; dodawanie (zgodnie z p. A7.7) powoduje pomnożenie k przez rozmiar obiektów całkowitych. Wynika to z zasady mówiącej, że tablice umieszcza się w pamięci wierszami (ostatni indeks zmienia się najszybciej) oraz że pierwszy wymiar w deklaracji tablicy pozwala określić wielkość zużytej przez tablicę pamięci, ale przy indeksowaniu nie odgrywa żadnej roli.

A8.6.3 Deklaratory funkcji

W nowym stylu deklaracji funkcji T D, w której D ma postać D1 (lista-typów-parametrów)

a typem identyfikatora w deklaracji T D1 jest „modyfikator-typu T”, typem identyfikatora w D jest „modyfikator-typu funkcja z argumentami lista-typów-parametrów zwracająca typ T”.

Składnia parametrów ma postać

lista-typów-parametrów: lista-parametrów lista-parametrów , ...

lista-parametrów:

deklaracja-parametru lista-parametrów , deklaracja-parametru

deklaracja-parametru:

specyfikatory-deklaracji deklarator specyfikatory-deklaracji deklarator-abstrakcyjny0Pc

powered by

A8 DEKLARACJE_____I__.-

I Ml SlOl

W deklaracji w nowym stylu lista parametrów wskazuje typy parametrTfWTAzliztl^Ui-nym przypadkiem jest deklarator funkcji bezparametrowej, w którym lista typów parametrów zawiera jedynie słowo kluczowe void. Jeśli lista typów parametrów kończy się wielokropkiem „ , to funkcja może akceptować więcej argumentów, niż jawnie podano; patrz p. Al3.2.

Typy takich parametrów, jak tablice czy funkcje, są - zgodnie z regułami przekształcania parametrów - zamieniane na wskaźniki; patrz p. A 10.1. Jedynym specyfikato-rem klasy pamięci, dozwolonym w specyfikatorze deklaracji parametru, jest register.

Ten specyfikator jest ignorowany, jeśli deklarator funkcji nie jest nagłówkiem definicji funkcji. Podobnie, jeżeli deklaratory w deklaracji parametrów zawierają identyfikatory, a deklarator funkcji nie rozpoczyna definicji funkcji, to te identyfikatory są natychmiast usuwane. Deklaratory abstrakcyjne, które nie wprowadzają identyfikatorów, będą opisane w p. A8.8.

W starym stylu deklaracji funkcji T D, w której D ma postać D1 (lista-identyfikato rów opc)

a typem identyfikatora w deklaracji T D1 jest „modyfikator-typu T”, typem identyfikatora w D jest „modyfikator-typu funkcja o nieokreślonych argumentach zwracająca typ T”. Parametry (o ile istnieją) mają postać

lista-identyfikatorów: identyfikator

lista-identyfikatorów , identyfikator

Jeśli deklaracja nie rozpoczyna definicji funkcji, to w deklaracji funkcji w starym stylu nie można umieścić listy identyfikatorów (p. A10.1). Taka deklaracja nie zawiera żadnych informacji o typach parametrów.

Na przykład deklaracja int f(), *fpi(), (*pfi)();

wprowadza funkcję f zwracającą wartość całkowitą, funkcję fpi zwracającą wskaźnik do obiektów całkowitych oraz wskaźnik pfi do funkcji zwracającej wartość całkowitą.

Dla żadnej z tych funkcji nie podano typów parametrów - wszystkie deklaracje są w starym stylu.

W deklaracji w nowym stylu:

int strcpy(char *dest, const char *source), rand(void);

N - Język ANSI C 289


Wyszukiwarka

Podobne podstrony:
ANSI C 6 DODATEK A PRZEWODNIK JĘZYKA ______ o nieokreślonej liczbie elementów całkowitych”, „funkc
ANSI C 3 DODATEK A PRZEWODNIK JĘZYKA C_________ Mechanizm makrodefinicji przydaje się do definiowa
ANSI C 6 DODATEK A PRZEWODNIK JĘZYKA C_____.____A2.5.2 Stałe znakowe Stała znakowa jest ciągiem zł
ANSI C 0 DODATEK A PRZEWODNIK JĘZYKA C_______ int max(a, b, c) int a, b, c;{ /* .» *1} gdzie dekla
ANSI C 4 DODATEK A PRZEWODNIK JĘZYKA C_______ wynikiem jest 1; jeśli odnosi się do tablicy, to wyn
ANSI C 5 DODATEK A PRZEWODNIK JĘZYKA C Struktury i tablice są obiektami złożonymi. Jeśli obiekt zł
ANSI C 5 DODATEK A PRZEWODNIK JĘZYKA C_________A2.1 Jednostki leksykalne Istnieje sześć klas jedno
ANSI C 7 DODATEK A PRZEWODNIK JĘZYKA C------- czaj umieszczane w oddzielnych wierszach; w kilku pr
ANSI C 8 DODATEK A PRZEWODNIK JĘZYKA C_________ Wszystkie z typów zmiennopozycyjnych: pojedynczej
ANSI C 9 DODATEK A PRZEWODNIK JĘZYKA C_______—- Gdy wartość całkowita jest przekształcana do typu
ANSI C 0 DODATEK A PRZEWODNIK JĘZYKA C_________ Obiekt typu całkowitego można jawnie przekształcić
ANSI C 1 DODATEK A PRZEWODNIK JĘZYKA C Implementacje różnią się reakcjami na dzielenie przez zero
ANSI C 2 DODATEK A PRZEWODNIK JĘZYKA C W pierwszym wydaniu książki typ wyrażenia przyrostkowego by
ANSI C 5 DODATEK A PRZEWODNIK JĘZYKA CA7.8 Operatory przesunięcia Operatory przesunięcia « i » są
ANSI C 6 DODATEK A PRZEWODNIK JĘZYKA C_____ Wynikiem tej operacji jest bitowa różnica symetryczna
ANSI C 7 DODATEK A PRZEWODNIK JĘZYKA C__________ rekurencyjnie, podskładowych nie może być kwalifi
ANSI C 8 DODATEK A PRZEWODNIK JĘZYKA
ANSI C 9 DODATEK A PRZEWODNIK JĘZYKA C________■ Kwalifikatory typu wskazują specjalne właściwości
ANSI C 0 DODATEK A PRZEWODNIK JĘZYKA C ___——- łujących się do samych siebie: struktura lub unia mo

więcej podobnych podstron