ANSI C 4

ANSI C 4



DODATEK A PRZEWODNIK JĘZYKA C ____—--

stropy jest funkcją zwracającą wartość całkowitą i mającą dwa parametry: wskaźnik do znaków i wskaźnik do stałych znaków. Nazwy parametrów są w istocie komentarzami. Druga funkcja, rand, nie ma parametrów i zwraca wartość całkowitą.

Deklaratory funkcji z prototypami parametrów stanowią najpoważniejszą zmianę w języku, wprowadzoną przez Standard ANSI. Ich przewagą w stosunku do dcklaratorów „w starym stylu” z pierwszego wydania książki jest możliwość wykrywania błędów i dopasowywania argumentów w wywołaniach funkcji. Spowodowało to jednak wiele zamieszania i nieporozumień przy ich wprowadzaniu, a także konieczność uwzględniania obu postaci deklaracji funkcji. Zachowanie zgodności z poprzednią postacią spowodowało też zeszpecenie składni, wprowadzając słowo void do deklaracji bezpara-metrowych funkcji nowego stylu.

Wielokropek „ służący do deklarowania funkcji ze zmienną liczbą argumentów jest także nowy i wraz z makrami zawartymi w standardowym nagłówku <stdarg.h> formalizuje mechanizm, który w pierwszym wydaniu książki był oficjalnie zakazany, ale nieoficjalnie tolerowany.

Te konstrukcje zostały zapożyczone z języka C++.

A8.7 Inicjowanie

W deklaracji obiektu jego inicjowany-deklarator może zawierać wartość początkową deklarowanego identyfikatora. Inicjator, który poprzedza się operatorem =, jest albo wyrażeniem, albo listą inicjatorów zawartą w nawiasach klamrowych. Lista może kończyć się przecinkiem - drobiazg umożliwiający schludne formatowanie programu.

inicjator:

wyrażenie-przypisania { lista-inicjatorów }

{ lista-inicjatorów , }

lista-inicjatorów:

inicjator

lista-inicjatorów , inicjator

Dla obiektów i tablic statycznych wszystkie wyrażenia w inicjatorach muszą być wyrażeniami stałymi opisanymi w p. A7.19. Dla obiektów i tablic auto lub register wyrażenia w inicjatorach muszą także być wyrażeniami stałymi, jeśli inicjator jest listą ujętą w klamry. Jeśli jednak inicjator dla obiektu automatycznego jest pojedynczym

wyrażeniem, to nie musi być wyrażeniem stałym, ale musi mieć typ odp przypisania do tego obiektu.

W pierwszym wydaniu książki nie zezwalano na inicjowanie automatycznych struktur, unii i tablic. Standard ANSI pozwala na to, lecz jeśli inicjator nie jest wyrażeniem prostym, to inicjować je można tylko za pomocą stałych konstrukcji.

Nie zainicjowany jawnie obiekt statyczny jest inicjowany tak, jakby jemu (lub jego składowym) przypisano wartość zero. Początkowa wartość nie zainicjowanego jawnie obiektu automatycznego jest niezdefiniowana.

Inicjatorem dla wskaźnika lub obiektu arytmetycznego jest pojedyncze wyrażenie, być może ujęte w nawiasy klamrowe. Wartość wyrażenia jest wstawiana do obiektu.

Inicjatorem dla struktury jest albo wyrażenie tego samego typu, albo ujęta w nawiasy klamrowe lista inicjatorów dla jej kolejnych składowych. Składowe, które są nie nazwanymi polami bitowymi, są ignorowane i nie są inicjowane. Gdy na liście jest mniej inicjatorów niż składowych struktury, wówczas pozostałe składowe są inicjowane zerami. Nie może być więcej inicjatorów niż składowych.

Inicjatorem dla tablicy jest ujęta w klamry lista inicjatorów dla jej kolejnych elementów. Jeśli nie jest znany rozmiar tablicy, to ten rozmiar wyznacza się na podstawie liczby inicjatorów i typ tablicy staje się kompletny. Jeśli tablica ma ustalony rozmiar, to liczba inicjatorów nie może przekroczyć liczby elementów tablicy; gdy jest ich mniej, wówczas pozostałe elementy są inicjowane zerami.

Specjalnym przypadkiem jest tablica znakowa, która może być inicjowana napisem; kolejne znaki napisu inicjują kolejne elementy tablicy. Podobnie napisem złożonym z rozszerzonych znaków (p. A2.6) można inicjować tablicę o elementach typu wchar_t. Jeśli nie jest znany rozmiar tablicy, to ten rozmiar jest wyznaczony przez liczbę znaków w napisie, włączając w to końcowy znak zerowy; jeśli rozmiar jest ustalony, to liczba znaków w napisie, nie licząc końcowego znaku zerowego, nie może przekroczyć rozmiaru tablicy.

Inicjatorem dla unii jest albo pojedyncze wyrażenie tego samego typu, albo ujęty w klamry inicjator dla jej pierwszej składowej.

W pierwszym wydaniu książki nie wolno było inicjować unii. Zasada „pierwszej składowej” jest niezręczna, ale nie da się tego uogólnić bez zmiany składni. Oprócz możliwości inicjowania unii (przynajmniej w prymitywny sposób) ta zasada ANSI C określa znaczenie nie zainicjowanych jawnie unii statycznych.

291


Wyszukiwarka

Podobne podstrony:
ANSI C 4 DODATEK A PRZEWODNIK JĘZYKA C_______ wynikiem jest 1; jeśli odnosi się do tablicy, to wyn
ANSI C 4 DODATEK A PRZEWODNIK JĘZYKA C_____ wiersz-elif: #    elit
ANSI C 6 DODATEK A PRZEWODNIK JĘZYKA C_____.____A2.5.2 Stałe znakowe Stała znakowa jest ciągiem zł
ANSI C 9 DODATEK A PRZEWODNIK JĘZYKA C_______—- Gdy wartość całkowita jest przekształcana do typu
ANSI C 6 DODATEK A PRZEWODNIK JĘZYKA C_____ Wynikiem tej operacji jest bitowa różnica symetryczna
ANSI C 3 DODATEK A PRZEWODNIK JĘZYKA C____- tablicą o pięciu elementach, z których każdy jest tabl
ANSI C 0 DODATEK A PRZEWODNIK JĘZYKA C_______ int max(a, b, c) int a, b, c;{ /* .» *1} gdzie dekla
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 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 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
ANSI C 1 DODATEK A PRZEWODNIK JĘZYKA C union { struct { int type; ł n; struct { int type

więcej podobnych podstron