| Start | Zajęcia 1 | Zajęcia 2 | Zajęcia 3 | Zajęcia 4 | Zajęcia 5 | Zajęcia 6 | Zajęcia 7 | Zajęcia 8 | Zajęcia 9 | Zajęcia 10 | Pliki z zajęć |
|---|
#include <stdlib.h>
void *malloc(size_t rozmiar); void free(void *wskaznik); void *realloc(void *wskaznik, size_t rozmiar); void *calloc(size_t ile, size_t rozmiar);
Dokładny opis powyższych funkcji na stornie Wikipedii
Funkcje z biblioteki stdlib
Przykład zastosowania funkcji malloc()
#include <stdio.h> #include <stdlib.h> int main() { float stab[10]; float *dtab; int n,i; printf("Podaj rozmiar :"); scanf("%d",&n); dtab = (float *) malloc(n * sizeof(float)); if(dtab == NULL) { printf("Blad przydzialu pamieci\n"); exit(1); } for(i=0;i<n;i++) { *(dtab+i) = rand()/(RAND_MAX + 1.0); *(stab+i) = dtab[i]; // Blad gdy n > 10 } while(--n >= 0) printf("%.4f %.4f\n",dtab[n],stab[n]); free(dtab); // free(stab); !!! Blad }
Ćwiczenia
macierz.h i macierz.c zadeklaruj i zdefiniuj następujące funkcje:utwórz_macierz - argumentami funkcji są rozmiary macierzy, wartością zwracaną jest adres (wskaźnik) dynamicznie utworzonej macierzy typu float (tablica zawierająca wskaźniki typu float) lub NULL gdy tworzenie macierzy się nie powiodłowczytaj_macierz - wstawia do macierzy (argumentami mają być wymiary macierzy oraz odpowiedni wskaźnik do macierzy) wartości wczytane z klawiaturywyświetl_macierz - wyświetla zawartość macierzy na ekraniezwolnij_macierz - zwalnia pamięć zajętą przez macierzdodaj_macierze - wykonuje operację dodawania dwóch macierzy (o odpowiednich rozmiarach). Wartością zwracaną jest adres (wskaźnik) nowej macierzy zawierającej rezultat dodawaniailoczyn, która wykonuje morzenie dwóch macierzy. Funkcja zwraca adres macierzy zawierającej wynik operacji mnożenia lub wartość NULL gdy podane macierze miały nieodpowiedni rozmiar