Лабораторија 6

Покажувачите ни овозможуваат да претставуваме сложени типови на податоци (структури), да ги менуваме вредностите испратени како параметри на функцијата, да работиме со динамички распределени мемориски области или поефикасно да пристапуваме до табелите. Покажувачот ни дава средства индиректно да пристапиме до вредност од типот на датум.

вредноста мемориската

Покажувачот е всушност вредност. Тоа е вредноста на мемориската адреса каде е она што навистина нè интересира. Покажувачите можат да бидат од типот близу (имаат само вредност на поместување) или од тип на фарови (тие исто така имаат сегмент и поместување).

декларира цел број и која има вредност 10 и се повикува цел покажувач int_p. * претходи на дефиницијата за променлива на покажувачот. Да се ​​направи врската помеѓу и и int_p се користи префиксот.

Ова ја доделува адресната вредност (мемориска адреса) на променливата и покажувач Од сега натаму int_p ќе ја содржи адресата на мемориската област каде што е поставена вредноста 10, вредноста на променливата и.

ПОЕНИ СОДРИТЕ АДРЕСИ ЗА МЕМОРИ !

Да се ​​повикам на нејзината вредност и ќе користиме '*':

Оваа операција ја доделува вредноста од мемориската адреса на која покажува int_p на променливата x.

Пренесување со упатување на параметрите на функцијата

Аритметички операции дозволено на покажувачите е собирање/одземање на константа, зголемување/намалување и одземање на две покажувачи од ист тип.

Додавањето 1 предизвикува покажувачот да покажува кон следниот објект од ист тип, а намалувањето предизвикува тој да покажува кон предходниот предмет во меморискиот простор.

pi ++ - pi ќе покаже на следниот цел број. Она што всушност се одзема или додава е големина на (тип).

Значењето на покажувачите може да се промени со експлицитна конверзија на типот чиста.* ((Char *) pf) ќе го обезбеди првиот бајт од репрезентацијата на типот променлива плови.

Покажувачот 0 е предефиниран како НУЛА и значи дека не означува ништо.

Бидејќи неважечки * значи неодреден покажувач, не можеме да извршуваме аритметички операции на овие покажувачи. Празни покажувачи ни овозможуваат да ја задржиме генералноста на програмата до максимум.

намален од два покажувачи е дозволено само за покажувачи од ист тип. p-q претставува број на предмети помеѓу стр и q. Покажувачи и слики

* стр ќе укаже на првиот елемент од низата на.

Еве два начина да ја пресметате должината на низата:

Забелешка Пазете се од иницијализации како што се:

Додека првиот правилно ја иницијализира променливата и, алоцирајќи го потребниот простор, втората инструкција ќе одвои мемориски простор за стринг константата "abcd" и ќе му ја додели адресата на покажувачот. стр. Динамичка распределба

ДИНАМИЧНА ДОДЕЛУВАЕ НА МЕМОРИЈА (МАЛОК, КАЛОК, СИЗЕОФ, БЕСПЛАТНО)
Динамичка распределба се препорачува за резервирање простор за променливи. Многу е тешко однапред да се знае колку податоци ќе обработи програма. Статичката распределба на низата ќе доведе или до потрошен простор на RAM меморија (прилично скап простор) при распределување количина многу поголема од потребите, или до појава на грешки кога количината на доделена меморија е многу под потребните потреби. Статичката алокација се прави во областа на податоците на програмата за време на генерирање на објектната слика на програмата.

Многу е подобро да се распредели простор колку што е потребно (ако е можно - потребната количина на меморија не треба да биде поголема од достапната).

Јазикот Ц им овозможува на програмерите динамички да ги распределуваат и ослободуваат мемориските области додека програмата работи. Функцијата што доделува меморија за променлива е калок (). Потребна е и употреба големина на () што ја одредува потребната меморија. Бесплатно () ослободува доделена меморија. Укажувачи на функциите

Може да се објави дека покажувачот покажува на функција. Декларацијата на таков покажувач се прави на следниов начин:

Загради наоколу * func_p се потребни, во спротивно компајлерот ќе ја разбере декларацијата како декларација за функција што враќа покажувач на цел број. За да ја доделиме адресата на функцијата на покажувачот, постапуваме на следниов начин:

каде принц е името на функцијата. Функцискиот повик се прави на следниов начин (ако ги немаме параметрите):

Ако функцијата ја врати вредноста, тогаш имаме: Аргументи на командната линија

Можно е да се испраќаат аргументи до програма во Ц кога ќе бидат активирани. Заградите што ја следат главната функција се за оваа намена. аргумент содржи број на примени аргументи повторно аргв [] тоа е низа покажувачи, од кои секоја содржи аргумент.

Забележи го тоа * Аргв [0] го содржи името на повиканата програма и* Аргв [1] е покажувач на првиот усвоен аргумент и * Argv [n] го означува последниот аргумент. Ако немаме аргумент, аргумент ќе има вредност 1, и за n аргументи аргумент ќе биде еднаква на n + 1. Проблемите решени
Предложени прашања