Студопедия — Приведите синтаксис объявления функции
Студопедия Главная Случайная страница Обратная связь

Разделы: Автомобили Астрономия Биология География Дом и сад Другие языки Другое Информатика История Культура Литература Логика Математика Медицина Металлургия Механика Образование Охрана труда Педагогика Политика Право Психология Религия Риторика Социология Спорт Строительство Технология Туризм Физика Философия Финансы Химия Черчение Экология Экономика Электроника

Приведите синтаксис объявления функции






тип возвращаемого значения имя функции (список параметров через запятую);

тип возвращаемого значения область действия:: имя функции (список параметров);

(пример: int cube(int x);)

<тип результата> [<область действия>::]<имя функции> (<типы параметров (через запятую)>);

19.Приведите синтаксис определения функции. Можно ли определить вложенные функции? Если да, то каким образом и какова допустимая глубина вложенности?

тип возвращаемого значения имя функции (список параметров) {тело функции};

тип возвращаемого значения область действия:: имя функции (список параметров) {тело функции};

Нельзя.

20. Укажите назначение классов памяти для переменных. Как транслятор определяет класс памяти для переменной?

Класс памяти – это время, в течении которого переменная существует в памяти компьютера.

Помогают компилятору, указывая в какую память стоит помещать данную переменную, для улучшения эффективности программы.

Они используются для того чтобы указывать область видимости и действия переменных, а также того, будут ли они динамическими (будет ли их адрес меняться в процессе выполнения программы).
К динамическим относятся auto и register.
• auto. Этот спецификатор автоматического класса памяти указывает на то, что объект располагает-ся в локальной (или автоматически распределяемой) памяти. Он используется в операторах объявле-ния в теле функций, а также внутри блоков операторов. Объекты, имена которых объявляются со спецификатором auto, размещаются в локальной памяти непосредственно перед началом выполнения функции или блока операторов. При выходе из блока или при возвращении из функции (о механизмах вызова функций и возвращения из них речь ещё впереди), соответствующая область локальной памяти освобождается и все ранее размещённые в ней объекты уничтожаются. Таким образом спецификатор влияет на время жизни объекта (это время локально). Спецификатор auto используется редко, поскольку все объекты, определяемые непосредственно в теле функции или в блоке операторов и так по умолчанию располагаются в локальной памяти. Вне блоков и функций этот специфика-тор не используется.
• register. Ещё один спецификатор автоматического класса памяти. Применяется к объектам, по умолчанию располагаемым в локальной памяти. Представляет из себя "ненавязчивую просьбу" к транслятору (если это возможно) о размещении значений объектов, объявленных со спецификатором register в одном из доступных регистров, а не в локальной памяти. Если по какой-либо причине в мо-мент начала выполнения кода в данном блоке операторов регистры оказываются занятыми, трансля-тор обеспечивает с этими объектами обращение, как с объектами класса auto. Очевидно, что в этом случае объект располагается в локальной области памяти.
К статическим относятся static и extern.
• static. Спецификатор внутреннего статического класса памяти. Применяется только(!) к именам объектов и функций. В C++ этот спецификатор имеет два значения. Первое означает, что определяе-мый объект располагается по фиксированному адресу. Тем самым обеспечивается существование объекта с момента его определения до конца выполнения программы. Второе значение означает ло-кальность. Объявленный со спецификатором static локален в одном программном модуле (то есть, недоступен из других модулей многомодульной программы) или в классе (о классах - позже). Может использоваться в объявлениях вне блоков и функций. Также используется в объявлениях, располо-женных в теле функций и в блоках операторов.
• extern. Спецификатор внешнего статического класса памяти. Обеспечивает существование объекта с момента его определения до конца выполнения программы. Объект, объявленный со спецификато-ром extern доступен во всех модулях программы, то есть глобален.

 

Транслятор определяет класс памяти автоматически. СТР.203

21. Можно ли описать несколько переменных одного типа в одном определении? Можно ли описать несколько переменных разных типов в одном определении? Можно ли инициализировать несколько переменных в одном операторе?

Можно описать несколько переменных одного типа в одном определении. (int a,b;)

Можно описать несколько переменных разного типа в одном определенни. (int *p, d;)

Можно инициализировать несколько переменных в одном операторе.(int x,q; x = q = 1;)

22. Как используется модификатор const для переменных?

Ключевое слово const предшествует описанию типа переменной и означает, что во время выполнения программы запрещено изменять значение этой переменной. Любая попытка изменить значение переменной, описанной с таким префиксом, приведет к выдаче компилятором сообщение об ошибке. Префикс const гарантирует, что наша программа не сможет случайно изменить значение переменной.

23. Может ли тип инициализирующего выражения не совпадать с типом определяемой переменной?

Да, может. int k = ‘a’;

24. Что такое «область действия идентификатора»? Как она определяется?

Идентификаторы – имена, даваемые переменным и другим программы.

Область действия идентификатора - это часть программы, в которой на идентификатор можно ссылаться. Существуют четыре области действия идентификатора:
1) область действия функция;
2) область действия файл;
3) область действия блок;
4) область действия прототип функции.
Идентификатор, объявленный вне любой функции (на внешнем уровне), имеет область действия файл. Такой идентификатор «известен» всем функциям от точки его объявления до конца файла. Глобальные переменные, описания функции, прототипы функции, находящиеся вне функции - все они имеют областью действия файл.

25. Доступна ли локальная переменная во вложенных блоках? Если да, как получить к ней доступ? Как получить доступ к глобальной переменной, если ее идентификатор совпадает с локальной переменной?

Локальная переменная – переменные, определяемые внутри функции (их область видимости ограничивается этой функцией).

Да, доступна. ОБЪЯСНЕНИЕ!!!

Доступ к глобальной переменно, если ее идентификатор совпадает с локальной переменной можно получить с помощью::

int i =::i; // локальной i присваивается значение глобальной i

26. Какую переменную называют глобальной? Как определяется область действия глобальной переменной?

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

27. Совпадает ли область видимости переменной с областью действия?

Область действия переменной совпадает с областью видимости переменной, если она не перекрывается локальной для вложенного блока переменной с таким же именем.

28. Как используется операция::?

Операция с оператором:: дает внутри блока (функции) доступ к глобальной переменной (только к глобальной) при наличии локальной «тезки»

int i =::i; // локальной i присваивается значение глобальной i

Символ:: - это символ является знаком операции глобального доступа.

29. Как инициализировать статические переменные?

static float a = 0; // инициализация статических переменных при первом вызове

static int = 5;

Инициализация статический переменных происходит один раз – во время первого вызова функции. При последующих вызовах повторной инициализации не происходит.

30. Определите назначение операций! ~ & %

! – логическое отрицание

~ - побитовое отрицание (изменяет 0 на 1 и 1 на 0)

& - побитовое «и» (поразрядное сложение И) – биты результата устанавливаются в 1, если соответствующие биты обоих операндов равны 1

% - остаток от деления

31. Определите назначение операций / << ^

/ - деление (нацело или дробно, смотря что и на что делят)

<< - побитовый сдвиг влево (ну еще перегружено для записи в поток)

^ - поразрядное исключающее ИЛИ (Биты результата устанавливаются в 1, если соответствующий бит только одного из операндов равен 1.)

32. Определите назначение операций >> || &&;

>> - побитовый сдвиг вправо) (ну ещё перегружено для чтения из потока)

|| - логическое ИЛИ

&& - логическое И

33. Определите назначение операций?, (тип)

? - краткая условия: (условие)? (выражение, которое вернёт, если верно): (выражение, которое вернёт, если ложь). Можно записать модуль b = abs(a) ó b = (a < 0)? –a: a

, - задание последовательности.
Это бинарный оператор, то есть, ему нужны два операнда. Обрабатываются операнды слева направо. Результат работы - второй операнд.
Например, если вы напишете i = (1,2); то в переменной i окажется значение 2. Разумеется, можно поставить в выражение и несколько таких операторов.
Так, строка i = (1, 3, -4); зашлет в i значение -4. Обратите внимание на круглые скобки - они, как обычно, помогают бороться с приоритетами операций, и в данном случае они совершенно необходимы.
Если вы попытаетесь написать, например, так: i = 1, 3, -4; то с удивлением обнаружите, что переменная i стала равна единице, а не -4. А все дело в том, что у оператора присваивания приоритет повыше, так что написать последнюю строку все равно, что написать result = ((i=1), 3, -4); а потом забыть про result и использовать значение i.
Зачем понадобился такой необычный оператор? Прежде всего, есть в программах на С такие места, куда можно поставить только одно выражение, а надо ставить несколько. Вот в таких случаях и пишут что-нибудь в таком духе:
f(((i=1), (j=2), i*j)));
То, что вы видите - вызов функции с одним аргументом. В конечном итоге, в качестве аргумента функция получит i*j. И правила языка не нарушены, и несколько выражений стоит. Эта же строка показывает и второе полезное применение этого оператора - мы прямо в вызове функции присвоили новые значения переменным i и j, и только после этого сосчитали значение аргумента i*j; То есть, с помощью оператора запятая можно гарантировать, что обработаются все операнды, причем обработаются они последовательно - слева направо. Еще один пример, чтобы вам этот оператор получше запомнился. В строке программы
f(), g(), h(); последовательно будут вызваны все три функции f(), g(), h();

(тип) - это оператор приведение, позволяющий переменную 1 типа привести к другому типу например double d = 2.0; int i = (int)d;

34. Укажите особенности выполнения операций % <<;

% - работает стандартно только для целых, и в математике остаток от деления ­-3 на 2 будет 1, а (-3) % 2 будет равно -1

<<; – выполняется намного быстрее, чем операция умножения. При этом операнды должны быть целыми.

35. Можно ли сравнивать указатели?

int x=100;

double y;

int* p=&x;

if (p!=NULL) x=y;







Дата добавления: 2015-04-19; просмотров: 960. Нарушение авторских прав; Мы поможем в написании вашей работы!



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

Функция спроса населения на данный товар Функция спроса населения на данный товар: Qd=7-Р. Функция предложения: Qs= -5+2Р,где...

Аальтернативная стоимость. Кривая производственных возможностей В экономике Буридании есть 100 ед. труда с производительностью 4 м ткани или 2 кг мяса...

Вычисление основной дактилоскопической формулы Вычислением основной дактоформулы обычно занимается следователь. Для этого все десять пальцев разбиваются на пять пар...

Измерение следующих дефектов: ползун, выщербина, неравномерный прокат, равномерный прокат, кольцевая выработка, откол обода колеса, тонкий гребень, протёртость средней части оси Величину проката определяют с помощью вертикального движка 2 сухаря 3 шаблона 1 по кругу катания...

Неисправности автосцепки, с которыми запрещается постановка вагонов в поезд. Причины саморасцепов ЗАПРЕЩАЕТСЯ: постановка в поезда и следование в них вагонов, у которых автосцепное устройство имеет хотя бы одну из следующих неисправностей: - трещину в корпусе автосцепки, излом деталей механизма...

Понятие метода в психологии. Классификация методов психологии и их характеристика Метод – это путь, способ познания, посредством которого познается предмет науки (С...

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

Йодометрия. Характеристика метода Метод йодометрии основан на ОВ-реакциях, связанных с превращением I2 в ионы I- и обратно...

Броматометрия и бромометрия Броматометрический метод основан на окислении вос­становителей броматом калия в кислой среде...

Studopedia.info - Студопедия - 2014-2024 год . (0.013 сек.) русская версия | украинская версия