![]() Главная страница Случайная страница Разделы сайта АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника |
Краткие теоретические сведения. Указатель – это переменная, которая может содержать адрес некоторого объекта в памяти компьютера, например адрес другой переменной
Указатель – это переменная, которая может содержать адрес некоторого объекта в памяти компьютера, например адрес другой переменной. И через указатель, установленный на переменную можно обращаться к участку оперативной памяти, отведенной компилятором под ее значения. Указатель объявляется следующим образом: тип *идентификатор; Примеры описаний указателей: int *pti; char *ptc; float *ptf; После такого описания переменная pti может принимать значение указателя на величину целого типа; переменная ptc предназначена для хранения указателя на величину типа char; переменная ptf – на величину типа float. С указателями связаны две унарные операции: & и *. Операция & означает «взять адрес» операнда (т.е. установить указатель на операнд). Данная операция допустима только над переменными. Операция * имеет смысл: «значение, расположенное по указанному адресу» и работает следующим образом: - определяется местоположение в оперативной памяти переменной типа указатель. - извлекается информация из этого участка памяти и трактуется как адрес переменной с типом, указанным в объявлении указателя. - производится обращение к участку памяти по выделенному адресу для проведения некоторых действий. Пример 1: int x, /* переменная типа int */ *y; /* указатель на элемент данных типа int */ y=& x; /* y - адрес переменной x */ *y=1; /* косвенная адресация указателем поля x “по указанному адресу записать 1”, т.е. x=1; */ Пример 2: int i, j=8, k=5, *y; y=& i; *y=2; /* i=2 */ y=& j; /* переустановили указатель на переменную j */ *y+=i; /* j+=i, т.е. j=j+1 -> j=j+2=10 */ y=& k; /*переустановили указатель на переменную k */ k+=*y; /* k+=k, k=k+k = 10 */ (*y)++; /* k++, k=k+1 = 10+1 = 11 */ Указателю-переменной можно присвоить значение другого указателя либо выражения типа указатель с использованием, при необходимости операции приведения типа (приведение необязательно, если один из указателей имеет тип " void *"). Забиваем Сайты В ТОП КУВАЛДОЙ - Уникальные возможности от SeoHammer
Каждая ссылка анализируется по трем пакетам оценки: SEO, Трафик и SMM.
SeoHammer делает продвижение сайта прозрачным и простым занятием.
Ссылки, вечные ссылки, статьи, упоминания, пресс-релизы - используйте по максимуму потенциал SeoHammer для продвижения вашего сайта.
Что умеет делать SeoHammer
— Продвижение в один клик, интеллектуальный подбор запросов, покупка самых лучших ссылок с высокой степенью качества у лучших бирж ссылок. — Регулярная проверка качества ссылок по более чем 100 показателям и ежедневный пересчет показателей качества проекта. — Все известные форматы ссылок: арендные ссылки, вечные ссылки, публикации (упоминания, мнения, отзывы, статьи, пресс-релизы). — SeoHammer покажет, где рост или падение, а также запросы, на которые нужно обратить внимание. SeoHammer еще предоставляет технологию Буст, она ускоряет продвижение в десятки раз, а первые результаты появляются уже в течение первых 7 дней. Зарегистрироваться и Начать продвижение int i, *x; char *y; x=& i; /* x -> поле объекта int */ y=(char *)x; /* y -> поле объекта char */ y=(char *)& i; /* y -> поле объекта char */ Рассмотрим фрагмент программы: int a=5, *p, *p1, *p2; p=& a; p2=p1=p; ++p1; p2+=2; printf(“a=%d, p=%d, p=%p, p1=%p, p2=%p.\n”, a, p, p, p1, p2); Результат выполнения: a=5, *p=5, p=FFC8, p1=FFCC, p2=FFD0. Конкретные значения адресов зависят от ряда причин: архитектура компьютера, тип и размер оперативной памяти и т.д. Операции над указателями (адресная арифметика) Записывая выражения и операторы, изменяющие значения указателей, необходимо помнить главное правило: единицей изменения указателя является размер соответствующего ему типа. Например, int *pti; char *ptc; float *ptf; Выполнение операторов pti=pti+1; или pti++; изменит значение указателя pti на 2, в результате чего он примет значение FFC2. В результате выполнения оператора pti--; значение указателя уменьшится на 2 и станет равным FFBE. Аналогично для указателей других типов: ptc++; увеличит значение указателя на 1; ptf++; увеличит значение указателя на 4. Разрешается сравнивать указатели и вычислять разность двух указателей. При сравнении могут проверяться отношения любого вида (" > ", " > =", " < ", " < =", " ==", "! ="). Наиболее важными видами проверок являются отношения равенства или неравенства. В заголовочном файле stdio.h определена константа – нулевой указатель с именем NULL. Ее значение можно присваивать указателю. Например: ptf=NULL; Нулевой указатель обозначает отсутствие конкретного адреса ссылки. Пример. Ввести два целых числа. Вычислить сумму, разность и деление этих чисел. #include< stdio.h> #include< stdio.h> void main() { int a, b, *p1, *p2, *p3; float *p4; clrscr(); puts(“Введите 2 целых числа”); scanf (“%d%d”, a, b); *p1=a+b; *p2=a*b; *p3=a-b; *p4=(float)a/b; printf (“%d + %d=%d\n”, a, b, *p1); printf (“%d * %d=%d\n”, a, b, *p2); printf (“%d - %d=%d\n”, a, b, *p3); printf (“%d / %d=%f\n”, a, b, *p4); getch(); }
|