Studium Stacjonarne I stopnia kier. E
Transkrypt
Studium Stacjonarne I stopnia kier. E
Studium Stacjonarne I stopnia kier. E-a, sem.III.2009/2010 INFORMATYKA Wskaźniki i dynamiczna alokacja pamięci w C, cz. I Materiał do ćwiczenia laboratoryjnego nr 3 W ramach przygotowania teoretyczngo należy wydrukować plik Wskazniki.pdf oraz strony 166-173 z WykladAnsiCbeztla.pdf. I. Część teoretyczna. 1. Wyjaśnić następujące pojęcia a) wskaźnik b) operator adresowy c) operator dereferencji II. Wyjaśnić następujące konstrukcje programowe związane ze wskaźnikami, opisy umieścić w sprawozdaniu z laboratorium. 1. int * px,*py;*pa, x=5,y=10, a[20]; 2. double * pd; 3. px=&x; 4. py=&y; 5. y=*px; 6. x=*py; 7. py=px; 8. *px=20; 9. *px=*py+5; Tablice i wskaźniki 10. pa=a; 11.*(pa+1)=10; 12. pa[2]=15; 13,pa++; 14. pa=pa-1; 15 *pa++=30; 16. *++pa=35; III Wyjaśnić pojęcia i konstrukcje programowe związane z dynamiczną alokacją pamięci, opisy umieścić w sprawozdaniu z laboratorium. 1. Alokacja pamięci na etapie kompilacji 2. Dynamiczna alokacja pamięci 3. Funkcje malloc, calloc, free. 4. int * px; 5. double *py; 6. px=(int) malloc( sizeof(int)); 7. py=calloc(5, sizeof(double)); 8. free(px); free(py); Zadanie1. Zdefiniować zmienne: x typu int oraz y typu double i zmienne wskaźnikowe: px typu wskaźnik do int oraz py typu wskaźnik do double. Wczytać z klawiatury wartości x i y przy użyciu wskaźników, następnie wydrukować bezpośrednio i przy użyciu wskaźników. Zadanie 2. Zdefiniować tablicę tab typu double oraz wskaźnik pa do typu double. Wczytać i wydrukować tablicę tab z użyciem pa. Zadanie 3. Napisać funkcję wymieniającą swoje argumenty typu int. Zadanie 4. Napisać program wyszukujący w tablicy liczb typu int wartości min i max przy użyciu wskaźnika. Zadanie 5. Utworzyć zmienne dynamiczne typu char, int i double, następnie wczytać i wydrukować. Zadanie 6. Alokować pamięć dla 10-elementowych tablic tab1 i tab2 liczb typu int, wczytać tablicę i posortować tab1 niemalejąco przy zastosowaniu algorytmu sortowania bąbelkowego oraz tab2 stosując algorytm prostego wybierania. Zagadnienia dodatkowe Alokacja pamięci w C++. W języku C++ do dynamicznej alokacji pamięci stosuje się operator new, a do dealokacji pamięci operator delete. Alokację zmiennych i tablic realizuje się w sposób podany w programie: # include <iostream.h> int main () { int *px; double *ptab; px= new int; // alokacja pamięci dla zmiennej ptab=new double[5];// alokacja pamięci dla tablicy *px=5; cout<<" Wartosc zmiennej="<<*px<<endl; for (int i=0;i <5;i++) {cout<<" Podaj element["<<i<<"]="; cin>>*ptab++; cout<<endl; fflush(stdin); } ptab-=5;// przesuniecie wskaźnika na początek alokowanego obszaru for (int i=0;i<5;i++) cout<<endl<<" Element["<<i<<"]="<<*ptab++; ptab-=5; delete px; delete [ ]ptab; cin. get(); return 0; } // Przykładowy wydruk działania programu Wartosc zmiennej=5 Podaj element[0]=-1 Podaj element[1]=2 Podaj element[2]=4 Podaj element[3]=0 Podaj element[4]=-3 Element[0]=-1 Element[1]=2 Element[2]=4 Element[3]=0 Element[4]=-3