c++ wykłady, C++ Wykład III 2004 2005

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

z

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

y

y

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

w

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

w

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,

w

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,

w

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


Wyszukiwarka

Podobne podstrony:
C++ Wyklad II 2004 2005
c++ wykłady, C++ Wykład IV 2004 2005
C++ Wykład II 2004 2005
C Wykład VI 2004 2005
C Wykład III 2005 2006 s
AS-wyklad 2004-2005, PSC (Porownawcze Studia Cywilizacji - kulturoznawstwo), Antropologia kulturowa

więcej podobnych podstron