Студопедия.Орг Главная | Случайная страница | Контакты | Мы поможем в написании вашей работы!  
 

ВОПРОС№29 Указатели в языке СИ: понятие, основные операции (* и &). Массивы и указатели общее и различия



Указатель — это переменная, значением которой является адрес некоторого объекта (обычно другой переменной) в памяти компьютера.

В языке С определены две операции для работы с указателями: * и &. Оператор & — это унарный оператор, возвращающий адрес своего операнда. Например, оператор

m = &count;

присваивает переменной m адрес переменной count.

Предположим, переменная count хранится в ячейке памяти под номером 2000, а ее значение равно 100. Тогда переменной m будет присвоено значение 2000.

Вторая операция для работы с указателями (ее знак, т.е. оператор, *) выполняет действие, обратное по отношению к &. Оператор * — это унарный оператор, возвращающий значение переменной, расположенной по указанному адресу. Например, если m содержит адрес переменной count, то оператор

q = *m;

присваивает переменной q значение переменной count. Таким образом, q получит значение 100, потому что по адресу 2000 расположена переменная count, которая имеет значение 100. Действие оператора * можно выразить словами "значение по адресу", тогда предыдущий оператор может быть прочитан так: "q получает значение переменной, расположенной по адресу m".

Связь между массивами и указателями.

Имя массива: это указатель-константа, который содержит адрес 1-ого элемента->массив: можно рассматривать как индексированный путь.

Соответственно: запись имя_массива [индекс]; можно объяснить так *(имя_массива+индекс);

Имя_массива[индекс]- указатель-константа, а *имя_массива- указатель-переменная

30Функции динамического выделения памяти языка СИ. Определение размера выделенного участка памяти. Динамический объект – объект создаваемый в процессе выполнения программы

Функции динамического выделения памяти:

char * malloc(size); char * calloc(nelem, elsize); Эти обе функции возвращают указатель на созданный динамический объект
unsigned int size – объем памяти, который нужно выделить (в байтах) unsigned int nelem – число элементов, для которых необходимо выделить память unsigned int elsize – объем памяти, который необходимо выделить для каждого элемента (в байтах)  

free (T) - функция явного освобождения памяти от динамического объекта Т

sizeof (T) – возвращает число байт необходимых для хранения объекта T в памяти





Дата публикования: 2015-02-03; Прочитано: 268 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!



studopedia.org - Студопедия.Орг - 2014-2024 год. Студопедия не является автором материалов, которые размещены. Но предоставляет возможность бесплатного использования (0.005 с)...