typy i zmienne funkcje.doc

(208 KB) Pobierz
Języki i metody programowania C2

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;

lub

b_ = 3;

int – całkowity

double* c;

c – wskaźnik do liczby rzeczywistej

double c_;

c = &c_;

*c = 2.8;

lub

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ęg deklaracji i widoczność zmiennych

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);

void main()

{

  int a=...

Zgłoś jeśli naruszono regulamin