background image

 

 

AJ

AJ

S

S

Jednostki 

leksykalne C++

 

(służą do budowania instrukcji 

języka)

1.słowa kluczowe,
2.identyfikatory,
3.stałe,
4.literały 

łańcuchowe,

5.znaki 

przestankowe

6.operatory.

background image

 

 

AJ

AJ

S

S

IDENTYFIKATOR
Y

 

Małe i wielkie litery, cyfry, 
znak podkreślenia. 

Uwagi:

pierwszy znak musi być literą lub 
podkreśleniem,

standardowo kompilatory C++ 
biorą pod uwagę pierwsze 32 
znaki (opcja –in kompilatora 
option/compiler/source)

rozróżniane są małe i duże litery

background image

 

 

AJ

AJ

S

S

np. 

nazwa, Andrzej, 

funkcja, funkcja_X, X1, x1 

różne identyfikatory:

ANDRZEJ,   Andrzej,    
AndrzeJ

background image

 

 

AJ

AJ

S

S

SŁOWA 
KLUCZOWE 

Specjalne 
identyfikatory 
(niepodzielny 

ciąg 

znaków) 
zarezerwowane 

dla 

ściśle 

określonych 

celów  i  mogą  być 
wykorzystywane tylko 
zgodnie 

ich 

przeznaczeniem. 

background image

 

 

AJ

AJ

S

S

asm
auto
break
case
cdeal
_cdeal
__cdeal

char

class
const
continue
_cs
__cs
default
delete

do
double
_ds
__ds

else

enum
_es
_export
__export
extern
far
_far
__far
_fastcall
__fastcall

float
for

friend
goto
huge
_huge
__huge

if

inline

int

interrrupt
_interrupt
__interrup
t
_loadds
__loadds

long

near
_near
__near
new
operator
pascal
_pascal
private
protected
public
register

return

_saveargs
__savearg
s

_seg
__seg
short
signed
sizeof
_ss
__ss
static
struct

switch

template
this
typedef
union
unsigned

virtual
void
volatile

while

background image

 

 

AJ

AJ

S

S

STAŁE 

ich 

ich wartości

 nie ulegają 

 nie ulegają 

zmianie

zmianie

Stałe znakowe

 (literały) – ciąg złożony 

z jednego 

‘x’      ‘R’

lub więcej znaków  ujęty w pojedyncze 
apostrofy

\n      \t     \b   \xhh     (tzn. sekwencje 
ucieczki
)

cha
r

int

Stałe zmiennopozycyjne

 – należą do podzbioru 

liczb rzeczywistych 

0.0      .26        2.            -84.17             notacja dziesiętna z 
kropką

1.18e12        -5.6789E-3          4e6        notacja 
wykładnicza  

Dokładność wymuszona               -84.17f          .89F        
3.14165e-8L    

float .
..

Stałe całkowite

 – liczba 

całkowita

87    037     0x12    0X7F

int 
...

background image

 

 

AJ

AJ

S

S

STAŁE    -   

deklaracje 

stałych

#define identyfikator 
ciąg_znaków

#define stala 9.81

#define nazwa ``Politechnika``

const typ_stałej 
identyfikator=ciąg_znaków;

const float stala=9.81;

const char *nazwa=``Politechnika``;

background image

 

 

AJ

AJ

S

S

LITERAŁY 

ŁAŃCUCHOWE

Ciąg o długości zero lub więcej znaków 

ujęty w podwójne apostrofy (cudzysłów) 

zakończony znakiem o kodzie zero `\0`

``abcd``    - reprezentacja wewnętrzna to 5 

znaków a b c d 0

background image

 

 

AJ

AJ

S

S

ZNAKI 

PRZESTANKOWE 

[ ]  ( )   { }  ,   ;   :   ...   

*  =   #

Nawiasy kwadratowe 

[ ]

 – do definiowania tablic lub 

wskazywania ich elementów
np. 

char str[20];
double tab[10][20][1];
Tab[1][5][4]=25;
 

Nawiasy okrągłe 

( )

 – m.in. do grupowania wyrażeń, 

wskazywania wywołań funkcji  i listy parametrów

np. 

p=0.5*(a+b)*h;

funkcja(); 

background image

 

 

AJ

AJ

S

S

Nawiasy  klamrowe 

{  }

  –  nawiasy  logiczne 

podobnie jak BEGIN END, wskazują tzw. instrukcję 
złożoną.
np.

if (x!=y)
{

p=x;
q=x*y;

}

Przecinek 

,

    -  służy  m.in.  do  oddzielenia 

argumentów wywołania funkcji
np. 

funkcja(x,y,z);
funkcja1(a,b,cd,x1);
 

Średnik 

;

  - oznacza zakończenie instrukcji.

np. 

a=c/y;
d=a*c;

background image

 

 

AJ

AJ

S

S

ZNAKI 

PRZESTANKOWE 

cd

 

Dwukropek 

:

  -  wskazuje,  że  poprzedzający  go  ciąg 

znaków powinien zostać potraktowany jako etykieta.
np. 

start:

y=x++;
z=y++;

Wielokropek 

...

  –  znajduje  zastosowanie  przy 

deklarowaniu funkcji o zmiennej liczbie parametrów.
np. 

funkcja(int x, ...);
funkcja1(int y, char z, ...);
 

Znak  gwiazdki 

*

  -  mnożenie,  do  deklarowania 

zmiennych wskaźnikowych.
np. 

int *wl;
char **wznaki;
 

background image

 

 

AJ

AJ

S

S

Znak  równości 

-  do  oddzielania  deklaracji 

zmiennej od części inicjującej tę zmienną.
np. 

int tab[3]={1,2,3}; 

Znak 

#

  - oznacza dyrektywę preprocesora.

np. 

#include <math.h>

background image

 

 

AJ

AJ

S

S

OPERATORY

 OPERATORY ARYTMETYCZNE 

  (addytywne, multiplikatywne, in- i dekrementacji),

 OPERATORY LOGICZNE,
 OPERATORY BITOWE,
 OPERATORY RELACYJNE,
 OPERATORY PRZYPISANIA,
 OPERATOR WARUNKOWY, 

(a++)+b)--;

(a++)+b)--;

c=(a, b+a, b*b)%(a>>4, 

c=(a, b+a, b*b)%(a>>4, 

b<<2);

b<<2);

++c*=(a!=0)?a:b++;

++c*=(a!=0)?a:b++;

background image

 

 

AJ

AJ

S

S

OPERATOR WYLICZENIOWY,
 OPERATORY WYBORU SKŁADOWYCH,
 OPERATORY POBRANIA ADRESU ZMIENNEJ 

  ORAZ DOSTĘPU DO ZMIENNEJ WSKAZYWANEJ,

 OPERATOR POBRANIA ROZMIARU,
 OPERATORY DOSTĘPU DO SKŁADOWYCH KLASY,
 OPERATORY DYNAMICZNEGO PRZYDZIAŁU PAMIĘCI,
 OPERATORY INDEKSOWANIA I WYWOŁANIA FUNKCJA,
 OPERATOR KONWERSJI.

OPERATORY 

cd

background image

 

 

AJ

AJ

S

S

OPERATORY ARYTMETYCZNE

OPERATOR ZNACZENIE

Operatory 

addytywne

+

Dodawanie 

-

Odejmowanie

Operatory

multiplikatywn

e

*

Mnożenie

/

Dzielenie

%

Reszta z 
dzielenia

background image

 

 

AJ

AJ

S

S

Np.

 

c=a

*

b;

d=a

/

b;

e=a

+

b;

f=a

-

b;

g=a

%

b;    // (13%2   

wynik 1)

background image

 

 

AJ

AJ

S

S

OPERATORY ARYTMETYCZNE  

cd

Operatory zwiększania 
(inkrementacji) i zmniejszania 
(dekrementacji) 

Dekrement

acja

Inkrementa

cja

Przedrostk

owy

--

x

++

x

Przyrostko

wy

x

--

x

++

Operatory przedrostkowe najpierw 
zwiększają (++) lub zmniejszają 
(--) wartość zmiennej o 1 a 
następnie następuje przypisanie. 

background image

 

 

AJ

AJ

S

S

Np.

 

int m=3, n=1,r;
r=(m

++

)+(

++

n);   // zmienna r 

=5
//dla
 r=(

++

m)+(

++

n);  // zmienna r 

=6

background image

 

 

AJ

AJ

S

S

OPERATORY RELACYJNE

OPERATO

R

ZNACZENIE

<

Mniejszy

<=

Mniejszy lub równy

>

Większy

>=

Większy lub równy

==

Równy

!=

Nierówny

background image

 

 

AJ

AJ

S

S

Np.

 

int a,b,xx;
a=10;
b=3;
xx=a

>=

b; // xx zostanie przypisana 

wartość 1 (prawda) 

background image

 

 

AJ

AJ

S

S

OPERATORY LOGICZNE

OPERATO

R

ZNACZENIE

!

Negacja

&&

Koniunkcja

||

Alternatywa

background image

 

 

AJ

AJ

S

S

Np.

int a,b,c,d;
a=1;
b=0;
c=a

&&

b; // c zostanie przypisana 

wartość 0
d=a

||

b;     // d zostanie przypisana 

wartość 1

background image

 

 

AJ

AJ

S

S

OPERATORY BITOWE

OPERATO

R

ZNACZENIE

&

Bitowa koniunkcja

|

Bitowa alternatywa

^

Bitowa różnica 

symetryczna

~

Bitowa negacja

<<

Przesunięcie w lewo

>>

Przesuniecie w prawo

Działają na uporządkowanym ciągu bitów, które 
jak wiadomo przyjmują wartości 1 lub 0

Operator

Operator

przesunię

przesunię

cia

cia

background image

 

 

AJ

AJ

S

S

OPERATORY PRZYPISANIA

OPERATOR

ZASTOSOWANI

E

ZNACZENIE

=

a=b

a=b

+=

a+=b

a=a+b

-=

a-=b

a=a-b

*=

a*=b

a=a*b

/=

a/=b

a=a/b

%=

a%=b

a=a%b

<<=

a<<=b

a=a<<b

>>=

a>>=b

a=a>>b

&=

a&=b

a=a&b

|=

a|=b

a=a|b

^=

a^=b

a=a^b

background image

 

 

AJ

AJ

S

S

Np.

int a=5,b=10, c=2;

a+=b) // zmienna 
a=15;
c*=b // zmienna 
c=20;

background image

 

 

AJ

AJ

S

S

OPERATORY WYLICZENIOWY

PRZECINKOWY

Operator 

wyliczeniowy 

(przecinkowy) 

– 

służy 

do 

utworzenia wyrażenia  złożonego z 
ciągu 

wyrażeń 

składowych 

oddzielonych 

przecinkami 

(wyrażenia  składowe  oblicza  się 
od  lewej  do  prawej).  Wyrażenie 
złożone 

użyte 

instrukcji 

przypisania  musi  być  ujęte  w 
nawiasy.

background image

 

 

AJ

AJ

S

S

Np.

int a=1, b;
a+=10;
b=(a++,a+=10,a/2) // 
zmienna b=11;

Np.

int n=10, i=2, k=4, wynik;
wynik=(n-=i, k+=2, i*=5, i++) // 
zmienne n=8, k=6 i=10, wynik=11;

background image

 

 

AJ

AJ

S

S

1. 

Typy proste

 (skalary)

              -  arytmetyczne  (całkowite  i     
rzeczywiste)

       - wskaźnikowe,

    

- referencyjne.

 

Typy danych w 
C++

 

2. 

Typy 

strukturalne

 

(złożone)

        

- tablice,

        - struktury,

        - unie,

        - klasy. 

     

- typ wyliczeniowy,

      - typ void

background image

 

 

AJ

AJ

S

S

Typy strukturalne

 

to uporządkowane, 
wspólne  zbiory 
obiektów tego 
samego lub różnego 
typu. 

2. 

Typy 

strukturalne

 

(złożone)

        - 

tablice

,

        - struktury,

        - unie,

        - klasy. 

Zmienne zdolne do przechowywania 
więcej niż jednej wartości 
jednocześnie nazwano zmiennymi 
strukturalnymi (agregatami danych)

background image

 

 

AJ

AJ

S

S

Typy tablicowe

 

Struktura danych zawierająca 
uporządkowany zbiór obiektów tego 
samego typu i odpowiada 
matematycznemu pojęciu wektora, 
macierzy itd. 

Zasady tworzenia tablic:

- każdy element tablicy ma 

przydzieloną swoją „skrzynkę” pamięci o 

unikalnym numerze (indeksie) od 

0 - n

,

- wszystkie elementy tablicy muszą być 

tego samego typu,

- tablica ma jedną wspólną dla 

wszystkich elementów nazwę, 

background image

 

 

AJ

AJ

S

S

Tablica jednowymiarowa - 
wektor

1

2

3

4

5

6

7

23

4

25

1

67

8

5

34

0

1

2

3

4

5

6

Numer elementu 
tablicy

Wartości 
poszczególnych 
elementów tablicy

Indeks elementu 
tablicy

1

2

3

4

5

6

7

D

o

r

o

t

k

a

0

1

2

3

4

5

6

1

2

3

4

5

12.1 0.78

2.3

2.0

12.7

8

0

1

2

3

4

background image

 

 

AJ

AJ

S

S

Indeks

 

elementu tablicy określa jak daleko, 
licząc od początku tablicy jest 
przesunięty dany element.

Zasady indeksowania elementów tablic

-elementy tablicy wskazujemy za pomocą 
indeksów,

-indeksy numerujemy od 0,

-numer elementu tablicy nie odpowiada 
jego indeksowi

C++ 
domyślnie 
liczy 
zaczynając 
od 0

background image

 

 

AJ

AJ

S

S

Deklaracja tablic 
jednowymiarowych 

float tablica1 
[5]; 

Nazwa – 

identyfikator 

tablicy

Typ danych 

każdego 

elementu 

tablicy

Rozmiar tablicy– 

liczba elementów 

tablicy

1

2

3

4

5

12.1 0.78

2.3

2.0

12.7

8

0

1

2

3

4

background image

 

 

AJ

AJ

S

S

Dostęp, wprowadzanie i 

wyprowadzanie elementów 

tablicy jednowymiarowej

for (int i=0; i<10; i++)

{       

cout<<„podaj kolejny element 
tablicy”;

cin>>tab1[i]; 

}

Wprowadzenie 
elementów 

tablicy tab1

for (int i=0; i<10; i++)

{       

cout<<„tab1[„<<i<<„]=”<<tab1[i
]<<endl;

}

Wyprowadzenie 
elementów 

tablicy tab1

tab1[2]; 

Dostęp do 3 elementu  tablicy 
tab1

background image

 

 

AJ

AJ

S

S

0

23 34 45

5

4

0

4

0

6

34

4

45

1

34 45

0

56

8

8

2

34

6

7

0

0

8

3

23

4

25

1

67

8

5

4

0

1

2

3

4

5

Tablica dwuwymiarowa - 
macierz

Indeks wiersza 
tablicy

Wartości 
poszczególnych 
elementów tablicy

Indeks  kolumny 
tablicy

background image

 

 

AJ

AJ

S

S

Deklaracja tablic 
dwuwymiarowych 

float tab2 [5]
[6]; 

Nazwa – 

identyfikator 

tablicy

Typ danych 

każdego 

elementu 

tablicy

Ilość kolumn 

tablicy

Ilość wierszy 

tablicy

background image

 

 

AJ

AJ

S

S

Dostęp, wprowadzanie i 

wyprowadzanie elementów 

tablicy dwuwymiarowej

for (int i=0; i<5; i++)

for (int j=0; j<6, j+

+) 

cin>>tab2[i]

[j];

 

Wprowadzenie 
elementów 

tablicy tab2

for (int i=0; i<10; i++)   

for (int j=0; j<6, j++)

cout<<tab2[i]

[j]<<endl;

Wyprowadzenie 
elementów 

tablicy tab2

tab2[0]
[0]; 

Dostęp do 1 elementu  tablicy 

tab2 
o indeksie 00

background image

 

 

AJ

AJ

S

S

Inicjowanie wartości 

początkowych  elementów 

tablic

int 
tab[4]={45,56,5,8};

lub

int tab[]={45,56,5,8};

int tabela[2][4]={

      {45,56,5,8}

      {4,6,78,6}

    };

lub

int tabela[2]
[4]={45,56,5,8,4,6,78,6};

background image

 

 

AJ

AJ

S

S

// 

Wyprowadzenie liczb w odwrotnej kolejności

#include <iostream.h>
#define nmax 10
 
main()
{

int tab[nmax], n,i;
cout<<”podaj 

liczbe 

elementow 

tablicy”<<endl;

cin>>n;
cout<<”Podaj liczby”<<endl;
for (i=0; i<n; i++)

cin>>tab[i];

cout<<”Liczby 

odwrotnej 

kolejnosci”<<endl;

for (i=n-1; i>=0; i--)

cout<<tab[i]<<endl;

return(0);

}

background image

 

 

AJ

AJ

S

S

Świat jest trójwymiarowy albo 

n-

wymiarowy

0

23 34 45

5

4

0

4

0

6

34

4

45

1

34 45

0

56

8

8

2

34

6

7

0

0

8

3

23

4

25

1

67

8

5

4

0

1

2

3

4

5

2

45

3

4

40

0

4

0

4

0

6

34

4

45

1

34 45

0

56

8

8

2

34

6

7

0

0

8

3

23

4

25

1

67

8

5

4

0

1

2

3

4

5

1

0

23 34 45

5

4

0

4

0

6

34

4

45

1

34 45

0

56

8

8

2

34

6

7

0

0

8

3

23

4

25

1

67

8

5

4

0

1

2

3

4

5

0

int lib[5][6][3]
[10];

int book[5]
[6][3];

background image

 

 

AJ

AJ

S

S

Tablice znakowe

w C++ teksty (łańcuchy znaków) 

przechowuje się w tablicach typu char

char tekst 
[101];

char *tekst="Dowolny";

zadeklarowano wskaźnik 

tekst 

wskazujący na początek 

podanego tekstu

Deklaracja tablicy na tekst  
składający się z maksymalnie 
100 znaków

char tekst [ ]
="Dowolny";

char tekst [8]="Dowolny";

Inicjowanie tablic znaków

char tekst [ ]
={'D','o','w','o','l','n','y','\0'};

background image

 

 

AJ

AJ

S

S

Warto zapamiętać

  Tablica składa się z elementów tego 

samego typu,

  Tablica dwuwymiarowa ma wiersze i 

kolumny,

  Tablica trójwymiarowa ma wiersze 

(wysokość), kolumny (szerokość) i  

stronice (głębokość),

  Tablice deklarujemy jak zwykłe 

zmienne proste  (long tablica[3][5][4];),

  Wymiary tablicy powinny być 

zdefiniowane jako stałe,

  Do elementu tablicy odwołujemy się 

za pomocą współrzędnych (indeksów),

background image

 

 

AJ

AJ

S

S

Warto zapamiętać

Można inicjować elementy tablicy 

podczas deklaracji tej tablicy (int 

t[2]={4,6};),

  Przy wprowadzaniu (cin) i 

wyprowadzaniu (cout) elementów tablic 

wykorzystujemy tyle pętli „for”  ile 

wymiarów posiada dana tablica,

  W C++ tablica znakowa jest 

interpretowana jako łańcuch znaków, 

czyli string,

  Teoretycznie możemy tworzyć tablice 

o dowolnie dużej ilości niezależnych 

(ortogonalnych) wymiarów. Dla każdego 

dodatkowego wymiaru musimy 

zastosować kolejną współrzędną.

background image

 

 

AJ

AJ

S

S

1. 

Typy proste

 (skalary)

              -  arytmetyczne  (całkowite  i     
rzeczywiste)

       

- wskaźnikowe,

      - referencyjne.

 

Typy danych w 
C++

 

2. 

Typy 

strukturalne

 

(złożone)

        - tablice,

        - struktury,

        - unie,

        - klasy. 

    

- typ wyliczeniowy,

     - typ void

background image

 

 

AJ

AJ

S

S

Typ wskaźnikowy

(wskaźnik)

Wskaźnik  (zmienna  wskazująca)  to 

zmienna  zawierająca  adres  początku 

obszaru 

pamięci, 

którym 

zapamiętane są wskazywane dane

czyli

wartością wskaźnika jest adres 

zmiennej 

background image

 

 

AJ

AJ

S

S

FFOO

wskaźnik i 
jego 
wartość 
(zawartość)

Typ wskaźnikowy

(wskaźnik)

wartością wskaźnika jest adres zmiennej 

dane

F

F

O

O

miejsce w pamięci 
począwszy od 
bajtu o nr FF00 
zawierające dane

background image

 

 

AJ

AJ

S

S

Deklarowanie zmiennej 

wskaźnikowej

(deklarowanie wskaźnika)

int 

*numer;

Została zadeklarowana zmienna 

numer

, która wskazuje 

dane typu 

int

* operator wskazania 

(wyłuskania)

background image

 

 

AJ

AJ

S

S

Deklarowanie zmiennej 

wskaźnikowej

(deklarowanie wskaźnika)

Aby  zmienna  wskazująca  podawała 

adres  konkretnej  zmiennej  na  którą 

ma  on  wskazywać      należy  użyć 

operator  adresowy  (referencji)   

&

który  przypisze  odpowiedni  adres 

zmiennej

numer=&zmien

na;

& operator adresu 

(referencji)

background image

 

 

AJ

AJ

S

S

Napisz 

program, 

którym 

zadeklarujesz  wskaźnik  do  pewnej   

zmiennej  oraz  przypiszesz  mu 

odpowiedni adres. 
Następnie 

spraw, 

aby 

wartość 

zmiennej 

została 

wypisana 

na 

ekranie na dwa sposoby:

1. poprzez  bezpośrednie  odniesienie 

do zmiennej,

2. poprzez wskaźnik.

Spraw  również,  aby  na  ekranie 

został wypisany adres zmiennej (na 

dwa sposoby)

background image

 

 

AJ

AJ

S

S

#include <iostream.h>
#include <conio.h>

int ala=155; //

deklaracja i inicjacja zwykłej zmiennej 

ala

int *zyga;    //

deklaracja wskaźnika

main()
{
clrscr();

zyga=&ala;  //

inicjacja wskaźnika by wskazywał adres 

zmiennej ala

cout<<"Wzrost Ali="<<ala<<endl;
cout<<"Wzrost Ali wg Zygi: "<<*zyga<<endl;
cout<<"Adres Ali="<<&ala<<endl;
cout<<"Adres Ali wg Zygi: "<<zyga<<endl;
getch();
return 0;
}

Wzrost Ali=155
Wzrost Ali wg Zygi=155
Adres Ali: 0x8f9304ce
Adres Ali wg Zygi: 0x8f9304ce

background image

 

 

AJ

AJ

S

S

Typ referencyjny (odniesienie)

Typ referencyjny określany czasem jako 

odniesienie, służy do wprowadzenia dodatkowej 

nazwy dla obiektu użytego w definicji jako wartość 

początkowa

Zmienne typu referencyjnego służą do 

reprezentacji innych zmiennych w programie

czyli

wartością zmiennej typu referencyjnego jest inna 

zmienna

Zmienne typu referencyjnego w praktyce 

służą do przekazywania parametrów do 

funkcji oraz zwracania wartości funkcji

background image

 

 

AJ

AJ

S

S

Deklarowanie zmiennej 

referencyjnej

int x, 

&rx=x;

typ zmiennej referencyjnej i zmiennej

         

nazwa zmiennej

operator i nazwa zmiennej referencyjnej          

inicjacja 

zmiennej referencyjnej

Deklaracja zmiennej referencyjnej 

musi być połączona z jej inicjacją

background image

 

 

AJ

AJ

S

S

Deklarowanie zmiennej 

referencyjnej

double pos=56, &r_pos=pos;

zmienna referencyjna r_pos związana 

ze zmienną pos

int i, n=10, &ri=n;
ri=n;

 

zmienna referencyjna ri związana ze zmienną i 

przyjmuje wartość 10

float x=10f;
int &r_licz=x;

 

zmienna referencyjna r_licz jest zmienną typu 

całkowitego 

background image

 

 

AJ

AJ

S

S

Typ referencyjny - 

ograniczenia

Nie wolno konstruować: 

- referencji do referencji 

float 

&&rx;

- wskaźników zmiennych referencyjnych

int 

&*wsk_ref;

- tablic referencji

double 

&_ref[100];

background image

 

 

AJ

AJ

S

S

Wskaźniki i tablice

W języku C++ istnieje ścisła zależność pomiędzy 

wskaźnikami i tablicami.

Każda operacja na zmiennej indeksowanej może być 

wykonana za pomocą wskaźników 

(za pomocą wskaźników 

operacje są wykonywane szybciej).

Podczas kompilacji  nazwa tablicy jest automatycznie 
przekształcana na wskaźnik jej pierwszego elementu.

tab[ ]  

kompilacja

      wtab=tab  

równoważne

 

wtab=&tab[0]

stała wskaźnikowa (nazwa tablicy)

zmienna wskaźnikowa

Zmienna wskaźnikowa może ulegać zmianie :

działanie     

wtab=wtab+1

     zmienia wskazanie na       

wtab=&tab[1]

background image

 

 

AJ

AJ

S

S

Wydruk tablicy tab przy użyciu wskaźników

#include <iostream.h>

#include <conio.h>

main()

{

clrscr();

int tab[]={0,1,2,3,4,5,6,7,8,9},*wtab;
wtab=tab;

//

lub wtab=&tab[0] poniewaz 

tab==&tab[0];

for (int i=0;i<10;i++)

cout<<"tab["<<i<<"]="<<*wtab++<<endl;

getch();

return 0;

}

tab[0]=0
tab[1]=1
tab[2]=2
tab[3]=3
tab[4]=4
tab[5]=5
tab[6]=6
tab[7]=7
tab[8]=8
tab[9]=9

background image

 

 

AJ

AJ

S

S

Kopiowanie tablicy tab1 do tab2 przy użyciu 

wskaźników

#include <iostream.h>

#include <conio.h>

main()

{

clrscr();

int tab1[]={0,1,2,3,4,5,6,7,8,9},*wtab1,tab2[10],*wtab2;

wtab1=tab1;

 

//lub wtab1=&tab1[0] poniewaz 

tab1==&tab1[0];

wtab2=tab2;

//lub wtab2=&tab2[0] poniewaz 

tab2==&tab2[0];

while (wtab2<&tab2[9])

*wtab2++=*wtab1++;

for (int i=0;i<10;i++)

cout<<"tab2["<<i<<"]="<<*wtab2++<<endl;

getch();

return 0;

}

background image

 

 

AJ

AJ

S

S

Wskaźniki i tablice znaków 

(łańcuchy)

W języku C++ wszystkie operacje na łańcuchach 

są wykonywane za pomocą wskaźników do znaków 

łańcucha.

Przypomnienie  łańcuch jest ciągiem znaków zakończonych 

znakiem '\0'

z tych powodów należy deklarować łańcuchy

char *tekst="ZABAWA";

char tekst[ ]="ZABAWA";

char *tekst="ZABAWA";

wtekst=&tekst[0];   

//wtekst=tekst;

wtekst=wtekst+1;   

//wtekst=&tekst[1];   czyli 

*wtekst == 'A' 

background image

 

 

AJ

AJ

S

S

Kopiowanie łańcucha ze zmiennymi 

indeksowanymi

#include <iostream.h>

#include <conio.h>

#include <string.h>

main()

{

clrscr();

char start[]="ABCD1111", cel[]="EFGH2222";

int i=0;

cout<<"Lancuch cel przed kopiowaniem:  "<<cel<<endl;

for (i=0;i<strlen(start);i++)

//while ((cel[i]=start[i])!='\0')

cel[i]=start[i];

//i++;

cout<<"Lancuch cel po kopiowaniu:  "<<cel<<endl;

getch();

return 0;

}

background image

 

 

AJ

AJ

S

S

Kopiowanie łańcucha przy użyciu wskaźników

 

#include <iostream.h>

#include <conio.h>

main()

{

clrscr();

char *start="ABCD1111", *cel="EFGH2222", *pomoc=cel;

cout<<"Lancuch cel przed kopiowaniem:  "<<cel<<endl;

while (*cel++=*start++)

;

//cel=cel-9;

cout<<"Lancuch cel po kopiowaniu:  "<<pomoc<<endl;

//<<cel<<

getch();

return 0;

}

background image

 

 

AJ

AJ

S

S

- typ 
wyliczeniowy

Służy 

do 

zadeklarowania 

grupy 

stałych 

całkowitych w zwarty sposób. 

Stałe  otrzymują  domyślnie  kolejne  wartości 
całkowite poczynając od 0.

Składnia

enum {stała1, stała2, stała3, ..., stałan};

wartość=

  0

     1                 2                  

       n

np.   enum {ford, fiat, opel, mercedes};

enum {stała1=10, stała2, stała3, ..., 

stałan};

Kolejne przyjmą wartości    11                   12            itd.  

background image

 

 

AJ

AJ

S

S

- typ wyliczeniowy i 
zmienne

Składnia (definicja nowego typu i jego zmiennych)

enum  nowy_typ  {stała1,  stała2,  ...,  stałan}  zm_1, 
zm_2=stała2;

nazwa  nowego  typu lista  stałych  wyliczeniowych

zmienne 

nowego typu z inicjacją

 

Np.  

enum miesiac {styczen, luty, marzec, kwiecień, maj, czerwiec, 

lipiec};

miesiac x=luty;

enum boolean {falsz, prawda} nie=fałsz, tak=prawda; 

    

background image

 

 

AJ

AJ

S

S

- typ void

Typ który posiada pusty zbiór wartości

Użyteczny  szczególnie  w  zastosowaniu  do 
funkcji, które nie zwracają żadnej wartości.


Document Outline