Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

Указатели

Оператор с предусловием

Операторы

Это предложение на языке программирования, возникающая как инструкция или команда.

Операторы = простые | сложные

простые = присваивания | объявления | выражения | пустой | перехода | вызов функции

сложные = составной | ветвления | цикла | выбора.

 

Условный оператор if

if ''выражение'' оператор ''j''

if ''выражение'' оператор 1;

else оператор2;

 

тут был какой то маленький пример.

 

 

Swith имеет структуру.

swith(выражение)

{ case конст_выраж1: [операторы 1];

case конст_выраж2: [операторы 2];

…...

case конст_выражn: [операторы n];

[default: операторы;]

}

1. вычисляется значение выражения

2. управление передается первому из списка оператору, константное выражение которого совпадает с вычисленным значением, затем последовательно выполняются все остальные ветви. Если требуется сделать единственный выбор из списка, то каждая группа операторов должна заканчиваться оператором breake (или return). Прерывает swith и передает дальше.

Если не одно констант выражений не совпадает со значением выражений, то выполняются операторы строки defoult

Константные выражения должны быть одного типа.

 

Любой цикл состоит из тела цикла, начальных установок, модификаций и параметров цикла и проверки условия продолжения повторения.

Один проход цикла называется интерация такт шаг

 

 

 

Именованным объектом память выделяется на этапе компиляции. Структура этих объектов в ходе исполнения программы не меняется. Для создания изменения и уничтожения каких-либо объектов в ходе выполнения программы подобные средства использованы быть не могут. И, следовательно, за этими объектами нельзя закрепить конкретные имена. Средства создания динамических величин без использования нового имени основаны на том, что значением именованной величины является адрес поля памяти другой величины, не имеющий имени. Такие величины называются указатели.

В языке С++ используются три вида указателей:

*на объект

*на функцию

*на void

 

Указатель на объект содержит адрес поля памяти, в котором хранятся данные определенного типа.

 

тип*имя;

int*x; x- имя указателя, ссылающегося на поле типа интежер

Указательную функцию содержит адрес поле памяти, в котором содержится исполняемое поле функции.

Тип (*имя)(список типов аргументов)

int(*fun)(double, double);

fun указатель на функцию, возвращающую значение типа int и имеющую 2 аргумента типа double

Указатель может быть как const так и переменной. И указывать как на константу, так и на переменную.

Примеры:

int I;

const int a = 1;

inr*pi;

const int*pci;

int*count cp = &i; // указатель — константа на целую переменную

const int*const cpc = &ci;// указатель константа на целую константу

 

 

Выделяемые участки динамической памяти принято называть динамическими переменными.

Инициализировать указатель можно одним из следующих способов.\

1. Присваиванием указателю адреса существующего объекта:

· с помощью операций получения адреса.

Int a = 5;

int*p=&a;

int*p(&a)

· с помощью значения другого инициализированного указателя.

int*r = p;

· с помощью имени массива или функции.

Int b[10];

int*t = b;

void f(int a)

{..}

void(*pf)(int); //pf- указатель

pf = f; // присваивается

2.Присваиванием указателю адреса поле памяти в явном виде.

char*vp = (char*)oxB80000000;

6 ричная константа передается переменной bp

3. Присваиванием пустого значения.

int*r = 0;

4. Путем выделения участка динамической памяти с помощью операции new

int*n = new int;

int*m = new int (10);

int*q = new int[10];

Освобождения памяти, выделенное с помощью операции new выполняется с помощью операции delete, при этом сама переменная в указатели сохраняется. Delete n; delete []q;

 

Операции с указателями.

1. Разадресация

Предназначена для доступа поля памяти, адрес которой указан в указателе.

Char a;

char *p = new char;

*p ='A'; a = *p;

На одну и туже область могут ссылаться нескольку указателей, при чем они могут быть разного типа.

#include <iostream>

int main()

{ long A = OxCC77FFAA;

short int *pint = (short int *) &A;

char * pchar = (char*) &A;

cout <<A<<*pint<<*pchar;

return 0;

}

Если в выражении присутствуют указатели разных типов, то требуется явное преобразование типов для всех указателей, кроме void*

Значение 0 не явно преобразуется в указатель любого типа.

Присваивание указателей на объекты указателям на функции и наоборот не допускаются.

2. Арифметические операции.

Сложение с константой,

Вычитание указателей,

Инкремет, Дикремент

Операции применяются только к указателям одного типа.

Инкремент перемещает указатель к следующему элементу массива, декремент к предыдущему, то есть значения указателя изменяется на величину sizeof(тип).

Аналогично увеличение указателя на константу означает, что его значение изменяется на величину константы умноженной на размер объекта данного типа.

Пример:

short *p = new short[5];

p++;

long *q = new long [5];

q++;

 

Разность двух указателей — это разность их значений деленное на размер типа в байтах.

Унарная операция получения адреса & - применима к величинам, имеющих имя, и размещенных в оперативной памяти. Следовательно, с ее помощью получить адрес скалярного выражения или не именованной константы нельзя.

 

 

<== предыдущая лекция | следующая лекция ==>
Бинарные операции | Типы определяемые программистом
Поделиться с друзьями:


Дата добавления: 2014-01-11; Просмотров: 345; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.017 сек.