pf=&сh ;
мұнда pf нұсқағыштың идентификаторы, &сh- ch айнымалысының адресі болатын тұрақты; унарлық &( амперсанд) операциясы объектінің адресін алу операциясы. Сонда, ch айнымалысының типі сhar, ал pf айнымалысы ch –қа нұсқағыш болса,оны машина жадында былай көрсетуге болады:
pf -нұсқағыш ch
0 1 2 p-1 p p+1 p+2
Сонымен pf-айнымалы, ал &ch-тұрақты. Егер pf айнымалысы басқа бір объектіге нұсқаса:
pf=&qf;
онда pf айнымалысының мәні айнымалы qf адресі болады. Ал, енді осы айнымалының мәніне қатынау үшін “жанама адрестеу” операциясы арқылы орындалады:
val=*qf;
*(жұлдызша) операциясының нәтижесінің типі нұсқағыш-айнымалының адресіндегі айнымалының типі. Сонда *qf операциясы qf адресіндегі мән. Мысалы, pf=&qf болса, онда *pf+=5 меншіктеуі: нұсқағыш qf мәніне тең жад адресіндегі мәнді алып, оған 5 қосып, нәтижені сол qf адресіне орыналастырады. Бұл операциясының нәтижесі :qf+=1; qf++;
++qf; (*pf)++ немесе ++(*pf); операцияларының кезкелгеніне барабар.
Сонда pf=&qf және val=*qf операторлары val= qf операторына барабар. Сонымен, егер меншіктеу операторында & таңбасынан кейін айнымалы атауы болса, онда операция нәтижесі көрсетілген айнымалының адресі, мысалы &chr операциясы ch айнымалысының адресін береді; ал, егер * таңбасы болып, одан кейін айнымалыға нұсқағыш болса, онда операция нәтижесі адресі көрсетілген жад ұяшығына орналасқан шаманың мәні. ‘*‘ - символы айнымалының өзін нұсқағыш ретінде анықтайды. Мысалы, Int*pi; сипаттауында pi нұсқағыш, ал *pi операциясы int типті кейбір шама;
id=32; pf=& id; y=* pf;/* меншіктеулер нәтижесінде y айнымалысына 32 мәні меншіктеледі;*/
Int x=1,y=2, z[10];/* бүтін типті берілгендерге мән меншіктеу */
Int *zp; /* zp нұсқағыш типті айнымалы*/
zp=&x; /* zp aйнымалыcына x адресінің мәні меншіктеледі*/
y=*zp ; /* y мәні х айнымалысының адресіндегі мән 1-ге тең */
*zp=0; /* zp айнымалысы x адресіне нұсқайды, x-мәні 0-ге тең*/
zp =&z[0]; /* z[0] жиымның 1-ші мәніне нұсқайды */
//С 74____ & және*операцияларын пайдалану
#include
#include
main(void)
# include
main() { int x, *u; u=&x; x=123}
printf( « address x: % p\n», &x); printf( « x мәні : % d\n», x);
printf( « u мәні : % p\n», u);
printf( « u айнымалысынң адресінің мәні : % l\n», *u);}
/*____________________________eo program_____________*/
Программаның орындалу нәтижесі :
address x : FFF4
x мәні : 123
u мәні : 123
u айнымалысынң адресінің мәні u : FFF4
/*_____________________________________________________*/
Бұл программада printf( ) функциясының тағы да бір ерекшелеу пішімі % p-жад адресін(нөмерін) 16 санау жүйесінде баспаға беру үшін пайдаланылады. Нұсқағыштар кейбір байттардың нөмерлері ( адрестері) болғандықтан нұсқағыш мәнін өзгертіп әртүрлі деректердің нөмерлері бойы нша жадта орын ауыстыруға болады. Демек, нұсқағышты пайдаланып программада объектіге сілтеме жасауға болады. Нұсқағыштарды пайдаланудың кейбір ережелері мен тиімді жақтары:
& символы тек қана объектерге ( айнымалыға, жиым элементтеріне , құрылым, бірігу, класстарға, басқа нұсқағыштарға) қоданылады:
жадтың әртүрлі орындарынан ақпарат алуға, түрлендіруге және орыналастыруға ;
программа орындалу барысында жаңа айнымалылар енгізуге;
нұсқағыш мәніне өсімше беріп, әртүрлі мәліметтерге адрес тағайындауға болады ;
Дәріс №15. Си тілінің графикалық функциялары мен процедуралары. Қарапайым геометриялық фигураларды салу. Мультипликация, қозғалысты программалау.
Достарыңызбен бөлісу: |