Приведите синтаксис объявления функции
тип возвращаемого значения имя функции (список параметров через запятую); тип возвращаемого значения область действия:: имя функции (список параметров); (пример: int cube(int x);) <тип результата> [<область действия>::]<имя функции> (<типы параметров (через запятую)>); 19.Приведите синтаксис определения функции. Можно ли определить вложенные функции? Если да, то каким образом и какова допустимая глубина вложенности? тип возвращаемого значения имя функции (список параметров) {тело функции}; тип возвращаемого значения область действия:: имя функции (список параметров) {тело функции}; Нельзя. 20. Укажите назначение классов памяти для переменных. Как транслятор определяет класс памяти для переменной? Класс памяти – это время, в течении которого переменная существует в памяти компьютера. Помогают компилятору, указывая в какую память стоит помещать данную переменную, для улучшения эффективности программы. Они используются для того чтобы указывать область видимости и действия переменных, а также того, будут ли они динамическими (будет ли их адрес меняться в процессе выполнения программы).
Транслятор определяет класс памяти автоматически. СТР.203 21. Можно ли описать несколько переменных одного типа в одном определении? Можно ли описать несколько переменных разных типов в одном определении? Можно ли инициализировать несколько переменных в одном операторе? Можно описать несколько переменных одного типа в одном определении. (int a,b;) Можно описать несколько переменных разного типа в одном определенни. (int *p, d;) Можно инициализировать несколько переменных в одном операторе.(int x,q; x = q = 1;) 22. Как используется модификатор const для переменных? Ключевое слово const предшествует описанию типа переменной и означает, что во время выполнения программы запрещено изменять значение этой переменной. Любая попытка изменить значение переменной, описанной с таким префиксом, приведет к выдаче компилятором сообщение об ошибке. Префикс const гарантирует, что наша программа не сможет случайно изменить значение переменной. 23. Может ли тип инициализирующего выражения не совпадать с типом определяемой переменной? Да, может. int k = ‘a’; 24. Что такое «область действия идентификатора»? Как она определяется? Идентификаторы – имена, даваемые переменным и другим программы. Область действия идентификатора - это часть программы, в которой на идентификатор можно ссылаться. Существуют четыре области действия идентификатора: 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 , - задание последовательности. (тип) - это оператор приведение, позволяющий переменную 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;
|