![]() Главная страница Случайная страница Разделы сайта АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника |
Проблемы, связанные с указателями
Самые распространенные проблемами при использовании указателей: 1) попытка работать с указателем, не содержащим адреса ОП, выделенной под переменную; 2) потеря значения указателя из-за присваивания ему нового 3) неосвобождение ОП, запрошенной с помощью функции выделения динамической памяти. При объявлении указателя на значение любого типа ОП для адресуемого значения не резервируется. Выделяется только ОП для переменной-указателя, но указатель при этом не получает никакого значения. Рассмотрим пример, содержащий грубую ошибку – попытку работать с неинициализированным указателем: int *х; //указателю х выделена ОП, но х не содержит адреса ОП для //конкретной переменной *x=123; //ошибка Присваивание ошибочно, так как указатель х не получил значения адреса, по которому должно быть расположено значение 123. Не вдаваясь в подробности, можно сказать, что неинициализированное значение указателя может быть недопустимым значением адресов, что может привести к нарушению работоспособности всей программы. Компилятор не обнаруживает эту ошибку. Это должен делать разработчик программы. Исправить ситуацию можно с помощью одной из функций выделения динамической памяти, например функции malloc(). Форма обращения к функции malloc(): < имя_указателя> = (< тип_указателя>)malloc(< объем_ОП>); где < имя_указателя> – имя переменной-указателя; < тип_указателя> – тип значения, возвращаемого функцией malloc(); < объем_ОП> – количество байтов ОП, выделяемой адресуемой переменной. Например, х=(int*)malloc(sizeof(int)); При этом из кучи выделяется 4 байта ОП для целого значения, а адрес его размещения заносится в указатель х. При таком выделении памяти работоспособность программы не нарушается. Аргумент функции malloc() определяет объем ОП для целого значения с помощью операции определения объема ОП для размещения значения целого типа sizeof(int). Операция (int*), записанная перед функцией, означает, что адрес, возвращаемый функцией malloc(), рассматривается как указатель на переменную целого типа. Это операция приведения типов. Забиваем Сайты В ТОП КУВАЛДОЙ - Уникальные возможности от SeoHammer
Каждая ссылка анализируется по трем пакетам оценки: SEO, Трафик и SMM.
SeoHammer делает продвижение сайта прозрачным и простым занятием.
Ссылки, вечные ссылки, статьи, упоминания, пресс-релизы - используйте по максимуму потенциал SeoHammer для продвижения вашего сайта.
Что умеет делать SeoHammer
— Продвижение в один клик, интеллектуальный подбор запросов, покупка самых лучших ссылок с высокой степенью качества у лучших бирж ссылок. — Регулярная проверка качества ссылок по более чем 100 показателям и ежедневный пересчет показателей качества проекта. — Все известные форматы ссылок: арендные ссылки, вечные ссылки, публикации (упоминания, мнения, отзывы, статьи, пресс-релизы). — SeoHammer покажет, где рост или падение, а также запросы, на которые нужно обратить внимание. SeoHammer еще предоставляет технологию Буст, она ускоряет продвижение в десятки раз, а первые результаты появляются уже в течение первых 7 дней. Зарегистрироваться и Начать продвижение Таким образом, ошибки не будет при использовании операторов: int *х; //x – имя указателя x=(int*)malloc(sizeof(int)); //выделена ОП целому значению, на которое указывает х, и переменой х //присваивается адрес выделенной ОП *x=123; // переменная, на которую указывает х, получила значение // 123 Освобождение ОП в куче выполняет функция free(). Ее аргументом является имя указателя, содержащего адрес освобождаемой и ранее выделенной динамической памяти, например free(x);
|