Podstawy programownia – laboratorium
Katedra Podstaw Informatyki
mgr inż. Barbara Fryc
1
Laboratorium nr 5
Wskaźniki w C++
Wskaźnikiem jest zmienna przechowująca adres pamięci. Zależnie od architektury
komputera, rozmiar wskaźnika wynosi 2, 4 lub więcej bajtów tyle co rozmiar danego typu, na
który pokazuje wskaźnik.
P
RZYKŁAD
1:
W
SKAŹNIK I ZMIENNA
int *w;
//definicja wskaźnika do pokazywania na obiekt (zmienną) typu int
int k = 3;
w=&k;
//ustawienie wskaźnika na obiekt (zmienną)k
cout<<”W zmiennej pokazywanej przez wskaźnik jest wartość”;
cout<< (*w);
Z
ADANIA
Zadanie 1.1 Ustawić wartość k dla zmiennej z przykładu 1 na 10. Wyświetlić wartość k i
wartość wskaźnika. Czy zmieniła się wartość wskaźnika? Odpowiedź uzasadnić.
Zadanie 1.2 Jaka jest różnica, pomiędzy wyświetlonymi wartościami?
cout<<(*w);
cout<<(w);
Odpowiedź uzasadnić.
RZYKŁAD
2:
W
SKAŹNIK I
T
ABLICA
int *w;
//definicja wskaźnika do pokazywania na obiekt (zmienną) typu int
int tab[10];
w=&tab[0];
//ustawienie wskaźnika na pierwszy element tablicy
// w=tab;
//ustawienie wskaźnika na pierwszy element tablicy
//w=&tab[5];
//ustawienie wskaźnika na piąty element tablicy
w = w+1;
//przesunięcie wskaźnika na kolejny element tablicy
Z
ADANIA
Zadanie 2.1 Wskazać i poprawić błędy w poniższym fragmencie programu:
….
float *rPtr;
long *intPtr;
intPtr = rPtr;
int *x,y;
x = y;
float x = 19.34;
float xPtr = &x;
cout << xPtr <<endl;
…..
Podstawy programownia – laboratorium
Katedra Podstaw Informatyki
mgr inż. Barbara Fryc
2
Zadanie 2.2 Jakie zadanie realizuje poniższa definicja funkcji:
int cos_robi(char *s)
{
int x=0;
for(; *s != '\0'; s++) ++x;
return x;
}
RZYKŁAD
3:
D
YNAMICZNA REZERWACJA OBSZARÓW PAMIĘCI
int *w, *tab;
//definicja wskaźnika do pokazywania na obiekt (zmienną) typu
int
w = new int(15); //wpisanie wartości 15 dla obiektu pokazującego przez wskaźnik
tab = new int[15]; //rezerwacja miejsca dla 15-sto elementowej tablicy typu int
delete w;
delete []tab;
Z
ADANIA
Zadanie 3.1 Napisać program, w którym przydzielana jest dynamicznie pamięć, dla zmiennej
typu float, inicjowanej wartością 3.0 oraz dla 15 elementowej tablicy również typu float.
Następnie wpisać do utworzonej tablicy wartości zmiennej utworzonej w sposób dynamiczny.
Zadanie 3.2 Napisać program, w którym tworzone są dynamicznie dwie tablice znakowe.
Jedna z tablic powinna być zainicjowana nazwiskiem osoby piszącej program. Następnie
przekopiować do pustej tablicy zawartość tablicy zainicjowanej.