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.
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
AJ
AJ
S
S
np.
nazwa, Andrzej,
funkcja, funkcja_X, X1, x1
różne identyfikatory:
ANDRZEJ, Andrzej,
AndrzeJ
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.
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
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
...
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``;
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
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();
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;
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;
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>
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++;
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
AJ
AJ
S
S
OPERATORY ARYTMETYCZNE
OPERATOR ZNACZENIE
Operatory
addytywne
+
Dodawanie
-
Odejmowanie
Operatory
multiplikatywn
e
*
Mnożenie
/
Dzielenie
%
Reszta z
dzielenia
AJ
AJ
S
S
Np.
c=a
*
b;
d=a
/
b;
e=a
+
b;
f=a
-
b;
g=a
%
b; // (13%2
wynik 1)
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.
AJ
AJ
S
S
Np.
int m=3, n=1,r;
r=(m
++
)+(
++
n); // zmienna r
=5
//dla
r=(
++
m)+(
++
n); // zmienna r
=6
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
AJ
AJ
S
S
Np.
int a,b,xx;
a=10;
b=3;
xx=a
>=
b; // xx zostanie przypisana
wartość 1 (prawda)
AJ
AJ
S
S
OPERATORY LOGICZNE
OPERATO
R
ZNACZENIE
!
Negacja
&&
Koniunkcja
||
Alternatywa
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
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
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
AJ
AJ
S
S
Np.
int a=5,b=10, c=2;
a+=b) // zmienna
a=15;
c*=b // zmienna
c=20;
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.
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;
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
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)
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ę,
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
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
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
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
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
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
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
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};
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);
}
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];
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'};
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),
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ą.
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
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
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
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)
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)
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)
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
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
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ą
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
AJ
AJ
S
S
Typ referencyjny -
ograniczenia
Nie wolno konstruować:
- referencji do referencji
float
&℞
- wskaźników zmiennych referencyjnych
int
&*wsk_ref;
- tablic referencji
double
&_ref[100];
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]
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
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;
}
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'
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;
}
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;
}
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.
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;
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.