рефераты конспекты курсовые дипломные лекции шпоры

Реферат Курсовая Конспект

Модификатор тип_переменной имя_переменной

Модификатор тип_переменной имя_переменной - раздел Философия, Лекция 1. Объектно-ориентированное программирование – это новый подход к программированию. Объектно- ориентированные языки обладают свойством Все Переменные В Программе Характеризуются Не Только Типом, Но И Классом Памя...

Все переменные в программе характеризуются не только типом, но и классом памяти. В языке Си существует четыре класса памяти: автоматический (automatic), регистровый(register), статический(static) и внешний(external).

 


6.3.1. Автоматические переменные.

Автоматическиепеременные в программе можно описать так:

auto A; auto char c1; auto int x= 125;

Опущенный описатель auto используется по умолчанию. Зона действия автоматической переменной ограничена блоком или функцией, где она описана. Она начинает существовать после обращения к функции и исчезает после выхода из нее. Таким образом автоматические переменные не занимают область в памяти. Значение автоматической переменной не может быть изменено другими функциями и в этих функциях может находится переменные с таким же именем. Проанализируем результаты работы следующей программы.

 

Пример:

 

#include <iostream.h>

main()

{

int t;

{

auto int t=2;

{

auto int t=3;

cout<<" t3 "<<t; // печатается значение 3

}

cout<<" t2 "<<t; // печатается значение 2

}

cout<<" t1 "<<t; // печатается 0

 

}

Результат:

t3 3

t2 2

t1 0

 

В этой программе переменная t описана в нескольких блоках, в каждом блоке она может принимать разные значения не зависимо от других. С ней могут выполнятся разные операции. В нашей программе значение переменной tвыводится на экран. В нашем случае выведутся числа 3, 2, и неопределенное число, так называемое число "мусор", так как переменной t не было присвоено значение во внешнем блоке.

(в некоторых случаях может быть и 0)


6.3.2. Внешние переменные.

Внешние (extern )переменные вводятся как нечто противоположное автоматическим. Это глобальныепеременные и к ним можно обращаться именами из любой функции. Поскольку внешние переменные доступны везде, их можно использовать для связи между функциями, не прибегая к механизму формальных параметров.

 

Пример:

 

#include <stdio.h>

int x=145;//Описание внешней переменной
main()
{
extern int x,y;
printf("x=%d y=%d ",x,y);
}
int y=541; //Описание внешней переменной

Результатом работы программы будет вывод:

x=145 y=541

 

Внешние переменные могут определятся вне какой-либо функции; при этом выделяется фактическая память. В любой другой функции, обращающейся к этим переменным, они должны описываться; делается это явно с помощью описателя extern.

Обычно поступают так, как показано в приведенном выше примере .

Все внешние переменные размещают в начале исходного модуля (вне всяких функций!), опуская дополнительные описания со словом extern внутри функций. Конечно, если внешняя переменная и функция, которая ее использует, размещены в разных файлах, описывать эту переменную в функции необходимо.

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

int var;

main()

{extern int var;

}

func1()

{ extern int var;

}


Лекция 7.

 

Пример:

 

#include<iostream.h>

int x=3; /*описание внешней переменной */

/* увелечение x */

int plus1()

{

x=x+1;

cout<<" прибавляем единицу: x="<<x;

}

// обе функции “видят” одну и ту же переменную

/*уменьшение x */

int minus1()

{

x=x-1;

cout<<" вычитаем единицу: x="<<x;

}

main()

{

cout<<" начальное значение x="<<x;

plus1();

minus1();

minus1();

}

 

Результатом работы программы будет вывод:

 

начальное значение x=3

прибавляем единицу: x=4

вычитаем единицу: x=3

вычитаем единицу: x=2

 

7.1. Статические переменные.

Статическиепеременные, подобно автоматическим, локальны в той функции или блоке, где они описаны. Разница заключается в том, что статические переменные не исчезают, когда функция (блок)завершает работу, и их значения сохраняются для последующих вызовов функции. Описание статических переменных выглядит так:

static char c; static int a=1;

Рассмотрим пример, в котором переменная объявлена как статическая.

 


Пример

/*статические переменные*/

#include <iostream.h>

int x=10;

void plus1()

{

static int x=0;

x=x+1;

cout<<" x="<<x;

}

void minus1()

{

 

x=x-1;

cout<<" вычитаем единицу: x="<<x;

}

main()

{

plus1();

plus1();

plus1();

minus1();

}

Начальное значение равное нулю переменная x принимает только один раз. Затем в программе main, функция plus1()несколько раз запускается, при каждом запуске функции аргумент x не изменяется, а остается значение из предыдущей функции. Таким образом повторение функцииplus1обеспечивает увеличение переменной x на 1 при каждом запуске 1, 2, 3 ... При вызове функции minus используется начальное присваивание 10 и результат будет равен 9.

 

Результатом работы программы будет вывод:

 

x=1

x=2

x=3

вычитаем единицу: x=9

 


7.1.1. Регистровые переменные.

 

Регистровыепеременные объявляются в программе с помощью ключевого слова register и должны хранится в сверх быстрой памяти ЭВМ - регистрах. Используются аналогично автоматическим переменным. Целесообразность их применения - для увеличения быстродействия программы.

 

#include <iostream.h>

 

void plus1()

{

static int x=0;

x=x+1;

cout<<" x="<<x;

}

void minus1()

{

register int x=10;

x=x-1;

cout<<" вычитаем единицу: x="<<x;

}

main()

{

plus1();

plus1();

plus1();

 

minus1();

}

Результат выполнения программы не изменится.

 

Описание вводит имя в области видимости; то есть, имя может использоваться только в определенной части программы. Для имени, описанного в функции (такое имя часто называют локальным), эта область видимости простирается от точки описания до конца блока, в котором появилось описание; для имени не в функции и не в классе (называемого часто глобальным именем) область видимости простирается от точки описания до конца файла, в котором появилось описание. Описание имени в блоке может скрывать (прятать) описание во внутреннем блоке или глобальное имя. Можно переопределять имя внутри блока для ссылки на другой объект. После выхода из блока имя вновь обретает свое прежнее значение.


Пример:

 

int x; // глобальное x

f() {

int x; // локальное x прячет глобальное x

x = 1; // присвоить локальному x

{

int x; // прячет первое локальное x

x = 2; // присвоить второму локальному x

}

x = 3; // присвоить первому локальному x

}

int* p = &x; // взять адрес глобального x


Скрытие имен неизбежно при написании больших программ. Однако читающий человек легко может не заметить, что имя скрыто, и некоторые ошибки, возникающие вследствие этого, очень трудно обнаружить, главным образом потому, что они редкие. Значит скрытие имен следует минимизировать. Использование для глобальных переменных имен вроде i или x нежелательно.
С помощью применения операции разрешения области видимости :: можно использовать скрытое глобальное имя.

 

Пример:

 

#include <iostream.h>

int x;

f()

{

int x = 1; // скрывает глобальное x

::x = 2; // присваивает глобальному x

cout<<" x1= "<<x;

}

main()

{

 

f();

cout<<" x2= "<<x;

}

На экран будет выведено:

x1=1

x2=2
Возможности использовать скрытое локальное имя нет.

 


Область видимости имени начинается в точке описания. Это означает, что имя можно использовать даже для задания его собственного значения.

 

Пример:

 

int x;

f()

{

int x = x;

}


Это не является недопустимым, хотя и бессмысленно, и компилятор предупредит, что x "used before set" ("использовано до того, как задано"), если вы попробуете так сделать. Можно, напротив, не применяя операцию ::, использовать одно имя для ссылки на два различных объекта в блоке.

 

Пример:

 

#include <iostream.h>

int x;

f()

{

int x = 1; // скрывает глобальное x

::x = 2; // присваивает глобальному x

cout<<" x1= "<<x;

}

f1() {

int y = x; // глобальное x

int x = 22;

y =y+ x; // локальное x

cout<<"y="<<y;

}

main()

{

f();

f1();

cout<<" x2= "<<x;

}

 

На экран будет выведено:

x1= 1y=24

x2= 2

 


Переменная y инициализируется значением глобального x, 2, а затем к нему прибавляется значение локальной переменной x, 22.

 

Имена параметров функции считаются описанными в самом внешнем блоке функции, поэтому

f(int x)

{

int x; // ошибка

}

фрагмент программы содержит ошибку, так как x определено дважды в одной и той же области видимости.

 

– Конец работы –

Эта тема принадлежит разделу:

Лекция 1. Объектно-ориентированное программирование – это новый подход к программированию. Объектно- ориентированные языки обладают свойством

ВВЕДЕНИЕ... Приступая к изучению более сложных конструкций языка С следует прежде всего повторить тот материал который был...

Если Вам нужно дополнительный материал на эту тему, или Вы не нашли то, что искали, рекомендуем воспользоваться поиском по нашей базе работ: Модификатор тип_переменной имя_переменной

Что будем делать с полученным материалом:

Если этот материал оказался полезным ля Вас, Вы можете сохранить его на свою страничку в социальных сетях:

Все темы данного раздела:

Имя_объекта.имя_элемента
x1.real=dim[3].real=1.45;   Класс может иметь столько объектов сколько необходимо, так же как и любая функция. Объекты могут быть любого тип

Имя объекта.имя функции();
Пример: #include<iostream.h> class rec { private: double len; double wid; public: double Len(){ return len/100;}

Наследование.
  В объектно- ориентированном программировании на основе уже существующих классов можно строить производные классы. Наследование означает, что производный класс, который называется кл

Директивы препроцессора.
  Препроцессор(макропроцессор) - это составная часть стандартного пакета языка Си, которая обрабатывает исходный текст программы до того, как он пройдет через компиля

Включение файлов.
  Директива #include включает в текст программы содержимое указанного файла. Эта директива имеет две формы:   #include "имя файла&

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

ВНУТРЕННЕЕ ПРЕДСТАВЛЕНИЕ ЦЕЛЫХ ТИПОВ ДАННЫХ.
  Беззнаковые данные хранятся в оперативной памяти просто, чтобы узнать какое число хранится в данном байте или в слове необходимо выписать значения всех его битов и считать, что это

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

Аргументы функции main()
  Функция main, с которой начинается выполнение программы на языке СИ, может быть определена с параметрами, которые передаются из внешнего окружения, например, из командной строки. Во

Область действия и область видимости переменных.
  В языке C++ каждая функция это отдельный блок программы. Попасть в тело функции можно только с помощью вызова данной функции, то есть нельзя оператором безусловного перехода goto пе

Модификаторы переменных.
  В языке C++ имеется несколько модификаторов которые изменяют область действия и время жизни переменных     Модификаторы &nb

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

ПЕРЕГРУЖЕННЫЕ ФУНКЦИИ.
  Перегрузкой называют практику придания функции более чем одного значения. Этот термин означает, что в коде программы существует две различные по содержанию, но одинаковые по названи

ФУНКЦИИ С ПЕРЕМЕННЫМ ЧИСЛОМ ПАРАМЕТРОВ.
  При вызове функции с переменным числом параметров в вызове этой функции задается любое требуемое число аргументов. В объявлении и определении такой функции переменное число аргумент

УКАЗАТЕЛЬ НА ФУНКЦИЮ.
  Основными характеристиками функции является тип возвращаемого значения и список типов формальных параметров. Подобно тому, как имена переменных никаким образом не влияют на их тип,

Начальные установки графики.
  Перед началом работы с графикой, используется функция initgraph(), которая инициализирует графическую систему загружает графический драйвер и переводит систему в графический режим.

Функция line().
  Функция line() - вычерчивает линию между двумя заданными точками принадлежит библиотеке graphics.h Общий вид вызова: void line(int x1, int y1, int x2, int

Функция lineto().
  Функция lineto() чертит линию от текущей позиции курсора в точку с координатами (x,y)Расположена в библиотеке graphics.h Общий вид вызова функции: void li

Функция circle().
  Функция circle() вычерчивает окружность заданного радиуса из заданного центра. Функция находится в графической библиотеке graphics.h В качестве параметров передаются коорди

Функция rectangle ()
  Назначение функции rectangle () в вычерчивании прямоугольника. Функция rectangle () вычерчивает прямоугольник, используя при этом текущие тип линии, толщину и цвет

ФОРМАТИРОВАННЫЙ ПОТОКОВЫЙ ВВОД-ВЫВОД.
  В примерах программ рассмотренных выше, использовались операции помещения в поток << , например в стандартный поток вывода cout и операцией извлечения из потока >>, прим

Хотите получать на электронную почту самые свежие новости?
Education Insider Sample
Подпишитесь на Нашу рассылку
Наша политика приватности обеспечивает 100% безопасность и анонимность Ваших E-Mail
Реклама
Соответствующий теме материал
  • Похожее
  • Популярное
  • Облако тегов
  • Здесь
  • Временно
  • Пусто
Теги