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