Typy i zmienne: wskaźnikowe, referencyjne
Funkcje – deklaracja, definicja.
Zasięg deklaracji i widoczność zmiennych
Przekazywanie parametrów przez wartość, referencje i wskaźnik
Przekazywanie wyniku funkcji przez return
Typy i zmienne wskaźnikowe
typ * nazwa_wkaźnika
Wskaźnik
Typ wskaźnika
Zmienna
Inicjowa-nie zmiennej wskaźni-kowej
Zmienna wskazy-wana
Typ zmiennej wskazy-wanej
char* a;
a – wskaźnik na znak
char a_;
a = &a_;
*a = ’A’;
lub
a_ = ’A’;
char - znakowy
int* b;
b – wskaźnik do liczby całkowitej
int b_;
b =&b_;
*b = 3;
b_ = 3;
int – całkowity
double* c;
c – wskaźnik do liczby rzeczywistej
double c_;
c = &c_;
*c = 2.8;
c_ = 2.8;
double –
zmienno-przecinkowy
char * d;
d – wskaźnik na znak
char w [10];
d=w;
cout<<d[1];
cout<<*(d+1)
char
znak
Typy i zmienne referencyjne
Typ & nazwa_zmiennej_refrencyjnej = nazwa_zmiennej;
· Zmienna referencyjna jest to zmienna tożsama z inną zmienną np.:
int zmienna_1;
int& ref_zmienna_1 = zmienna_1;
Zmienna zmienna_1 jest dostępna pod dwiema nazwami: zmienna_1 oraz ref_zmienna_1.
· Referencja do stałej
const int & ref_stała = 1;
Zmienna ref_stała ma dostęp do wartości 1 umieszczonej w zmiennej tymczasowej.
· Nie ma takich zmiennych referencyjnych:
referencji do referencji np. float && a;
wskaźników zmiennych referencyjnych np. int & * wskaz_ref;
tablic referencji np. int & tab[10];
Funkcje, deklaracje, definicje
deklaracja fukcji = prototyp funkcji
void fun (int , long& , const float& );
void main ()
{
int i = 1;
long j = 1;
float k = 3;
// wywołanie funkcji
fun(i, j, k); /* wartość zmiennej i oraz k nie ulegnie zmianie po wykonaniu funkcji fun,
natomiast wartość zmiennej j zmieni się i będzie równa 2*/
//wywołanie funkcji
fun(j, i, k); /* Niebiepieczeństwo! - zmienna i typu int podstawiona pod parametr ref przekazywany jako parametr long przez referencję nie ulegnie zmianie, gdyż operacja została wykonana na zmiennej tymczasowej typu long (w Visual C++ - błąd)*/
}
//definicja funkcji
Nagłówek funkcji
Parametry funkcji (...)
Nazwa funkcji
Wynik funkcji
Ciało funkcji {...}
void fun (int wart, long& ref, const float& st)
wart++; /*podczas wywołania funkcji f, wart++ zwiększa na stosie lokalną kopię pierwszego argumentu aktualnego - przekazywanie przez wartość*/
ref++; /*ref++ zwiększa wartość parametru aktualnego za pośrednictwem
adresowania pośredniego - przekazywanie przez referencję polega na umieszczaniu adresu parametru aktualnego na stosie*/
cout << st <<’\n’; /*zmienna st przekazywana jest przez referencję, lecz nie
można zmienić jej wartości*/
Zasięgi:
· Lokalny
w bloku { } od miejsca definicji w bloku do końca bloku
· Funkcji – dla etykiet zasięgiem jest funkcja
Etykiety dla goto
case
default
· Pliku
Dla nazwy zdefiniowanej na zewnątrz wszystkich bloków funkcji zasięgiem jest cały plik od miejsca definicji do końca pliku – są to zmienne globalne
Przykład
int a; //zmienna globalna
void fun();
void main()
int a; //zmienna lokalna
a=8;
fun();
void fun()
a=6;
int a;
a=2;
int a, b;
a=9;
b=89;
a=20;
//b=7; tutaj wystąpi błąd – zmienna b jest niezdefiniowana
Przekazywanie parametrów do funkcji przez wartość
#include <stdio.h>
#include <conio.h>
void f_wartosc(int, int);
int a=...
chesschempion