1)
a)z= -23 b) z= -15 c)z = 3 d) z= 7
2) Przy użyciu "" biblioteka jest szukana w katalogu z kodem programu, jeśli nie zostanie znaleziona, lub jest używane <>, biblioteka jest szukana wg reguł zależnych od implementacji.
3) #define ABS(A) (A<0)? -(A):(A)
4) ***t=(int *)malloc (sizeof*t);
**t=(int *)malloc (sizeof**t);
*t=(int**) malloc(sizeof***t);
t=(int***)malloc(sizeof****t);
free(***t);
free(**t);
free(*t);
free(t);
Należy pamiętać o załadowaniu <stdlib.h>
5)Przekazywanie przez wartość powoduje, że wywołana funkcja nie może zmienić wartości zmiennej, tylko ją pobiera. Przy przekazaniu przez zmienną, funkcja może zmieniać wartość. Do przekazywania przez zmienną służą wskaźniki.
int suma (int a, int b) int suma(int *a, int *b)
{ int suma=a+b; { int suma=*a+*b;
a=a+2; *a=*a+2
return suma; return suma;
} }
Po wywołaniu tej funkcji w main zauważymy różnicę. W przypadku 1 zmienna a będzie miałą taką wartość, jak przed wywołaniem, zaś przy użyciu 2 kodu a będzie zwiększone.
6) typ_zwracany_przez_funkcje nazwa_wskaźnika(nazwa_funkcji)(argumenty_funkcji)
np: int (*wsk_suma)(int a,int b);
wsk_suma=suma;
7) const float pi=3,14;
#define ROZMIAR 32
enum MIESIACE {STYCZEŃ,LUTY,MARZEC}
8) typedef int=CAL; /*CAL jest synonimem int np definiowanie int a jest równoważne CAL a*/
typedef tworzy nową nazwę dla starego typu danych, zaś define tworzy nowy typ danych.
9)
p=(struct wezel *)malloc(sizeof(struct wezel)*12);
należy załadować <stdlib.h>
10)
struct costam
{ int a;
int b;
int c1:1;
}
11) int suma(int a,int b,...)
Makra: va_arg(), va_start(), va_end()
12)
struct tree
{ struct tree *left;
struct tree *right;
char *dane;};
13)Każdy program w momencie uruchomienia “otrzymuje” od razu trzy otwarte strumienie:
. stdin (wejście)
. stdout (wyjście)
. stderr (wyjście błędów)
(aby z nich korzystać należy dołączyć plik nagłówkowy stdio.h)
14) Program make analizuje pliki Makefile i na ich podstawie wykonuje określone czynności związane z kompilacją. Przydatny przy używaniu dużej liczb plików nagłówkowych.
15) int main (int argc, char *argv[])
16) #define KWADRAT (A) ((A)*(A))
17) char* strcpy(char *dest, const char *src);
char *gets(char *buffer)
Funkcje te wykonują operacje na łańcuchach. Ich niebezpieczeństwo polega na tym, że wykonuje te czynności nie sprawdzając uprzednio długości łańcucha, co może doprowadzić do przepełnienia bufora.
18) extern to słowo definiujące zmienną globalną. register oznacza zmienną rejestrową, czyli dajemy kompilatorowi sygnał, że chcemy, by dana zmienna była przechowywana w rejestrach procesora (kompilator nie musi tego uwzględniać), static- zmienna lub funkcja statyczna. Jeśli piszemy statyczną funkcję w pliku nagłówkowych, to nie jest ona widziana po załadowaniu tego pliku do kodu źródłowego. Zmienna statyczna umieszczona w definicji funkcji istnieje tak długo, jak długo działa program, lecz pozostałe funkcje nie mogą z niej korzystać.