Тақырыбы: Массивтерге, кµрсеткіштерге кµрсеткіштер.
(1 сағат)
1.Массивтерге кµрсеткіш
2. Кµрсеткіштерге кµрсеткіш
3. Қатар көрсеткіштері
Пайдаланылатын әдебиеттер:
а) негізгі
1. К.Паппас, У.Мюррей “Программирование на С и С++”, Киев, 2000
2. А.Кетков, Ю.Кетков “Практика программирования Бейсик,
Си, Паскаль”, М.: 2001
б) қосымша
3. Шилдт Г. “Теория и практика С++”, Санкт-Петербург, 1996
4. Березин Б.И., Березин С.Б. “Начальный курс С и С++”, М.:1999
1.Массивтерге кµрсеткіш
Кµрсеткіштер мен массивтер бір-бірімен логикалыќ байланысты. Массив атауы – константа екені белгілі. Ал б±л константа мєні – массивтіњ 1-ші элементініњ адресі. Сондыќтан да, массив атауынын мєні меншіктеу не басќа да операторлар арќылы µздін алмайды.
Мысалы : float типтін ft массиві берілсін:
2. define 1 20
float + ft [I] ;
float + pf;
Келесі ќатарда жогарыда ањыќталѓан pf кµрсеткішіне массивтіњ 1-ші элементініњ адресі меншіктеледі .
Pf = ft;
Б±л µрнекті мына т‰рде де жазуѓа болады: pf= & ft[o];
Ал келесі µрнектер кµрсеткіш float типті айнымалар адресін саќтау ‰шін аныќталса да ќате болып табылады :
Ft = pf;
& ft [o]=pf;
10= pf ; деп жазуѓа болматындыѓы сияќты жоѓарындаѓы
µрнек те маѓынасыз.
2. Кµрсеткіштерге кµрсеткіш.
С/С++ программаларында басќа кµрсеткіштергі кµрсеткіш ќуруѓа болады.¤з кезегінде басќа кµрсеткіштер айнымалылар адресін меншіктелейді.
Б±л процесс келесі суретке кµрсетілген :
10110 1986 10
[1011] [1011] [1986]
PPI –PI кµрсеткішіне кµрсеткіш, PPI-њ мєні рі кµрсеткішініњ адресіне тењ .
Кµрсеткішке кµрсеткішті пограммада сипаттау ‰шін ** белгісін
Ќолданалады: іn+**ppi;
Осылайша ж±лдызшалар саны жанама адрестеу денгейін білдіреді . Жанама адрестеу денгейі соњѓы айнымалыныњ мєнін алу ‰шін ќанша кµрсеткішті ашу керектігін білдіреді .
Тµменде єрт‰рлі жанама адрестеу денгейдегі кµрсеткіштер келтірілген :
In+ I =10; pi =& I;
In+ * pi; ppi=& pi;
In+ ** pii; ppp =&ppi;
In+ *** pppi;
i pi ppi pppi
10 1111 2222 3333
[1111] [2222] [3333] [4444]
Бұл мысалдан көрініп тұрғанындай қалауымызша кезкелген деңгейдегі көрсеткіштер құруға болады екен.
5-ші қатарда бірінші деңгейдегі көрсеткіш pi-ге і айнымалының адресі меншіктеледі. Енді і айнымалысының мәнін * pi арқылы алуға болады.
6-қатарда 2-ші деңгейлі көрсеткіш ррі-ге рі-көрсеткішінің адресі меншіктеледі (рі-ң мәні емес). Бұл жағдайда і айнымалысының мәнін (10) **рі өрнегі арқылы ала аламыз.
С++ программасында көрсеткіш сипаттамасында-ақ басқа айнымалы адресін меншіктеу операциясын (амалын) орындауға болады. (Инициализация)
int ***pppi=&ppi;
3.Қатар көрсеткіштері
Қатарлық константалар шын мәнінде соңы нольдік символмен аяқталатын символдық массив болып табылады. Қатар көрсеткіштерін төмендегіше сипаттап және инициализация жасауға болады:
char *psz=”Файл не найден”;
Ф
|
а
|
й
|
л
|
|
н
|
е
|
|
н
|
а
|
й
|
д
|
е
|
н
|
\0
|
{1110]
|
|
|
|
|
|
|
|
|
|
|
|
|
|
[1124]
|
(Жадыдағы символдар қатарының көрінісі)
Бұл өрнекте char типті psz көрсеткіші құрылып, оған қатардың 1-ші символының (Ф әрпі) адресі меншіктеледі.
psz
1110
|
|
Ф
|
а
|
й
|
л
|
|
н
|
е
|
|
н
|
а
|
й
|
д
|
е
|
н
|
\0
|
[7163]
|
|
{1110]
|
|
|
|
|
|
|
|
|
|
|
|
|
|
[1124]
|
Жоғарыда келтірілген өрнекті мына үлгіде де жазуға болады:
char *psz;
psz=” Файл не найден”;
Қатар көрсеткіштері мен символдық массивтерді қолдануда кейбір қателіктер жиі кездеседі. Айталық:
char *psz=”Файл не найден” ;
char *pszarray[]=”Файл не найден” ;
берілген 2 өрнекте көрсеткіш psz мен массив pszarray арасындағы айырмашылық мынада: psz көрсеткіш айнымалының мәні өзгеруі мүмкін, ал pszarray массив атауы константа болғандықтан мәні өзгермейді. Сондықтан келесі жазылған қатар қате деп есептеледі.
char pszarray[15];
pszarray =”Файл не найден” ;
Достарыңызбен бөлісу: |