База ответов ИНТУИТ

Основы программирования

<<- Назад к вопросам

Являются ли локальные переменные функции общимидля разных нитей (threads), работающих параллельнов рамках одного процесса?

(Отметьте один правильный вариант ответа.)

Варианты ответа
Разные для разных нитей. (Верный ответ)
Являются общими.
Похожие вопросы
Где хранятся локальные переменные функции в языке Си?
Локальные переменные функции языка Си адресуютсяотносительно регистра FP (Frame Pointer — указателькадра). Что содержится в ячейке памяти, адрес которойзаписан в регистре FP, в процессе выполнения телафункции?
Какие объекты операционной системыобычно используются для исключенияодновременного доступа к критическим даннымиз разных нитей или процессов?
Функция языка Си имеет прототип
    int f(int x, int y);
(т.е. имеет два целочисленных аргумента ивозвращает целочисленное значение).Локальные переменные и аргументы функцииадресуются относительно регистра FP, т.е. их адресаравны сумме содержимого FP и константы, задающей смещение.Чему равен адрес аргумента y функции?
В функции f языка Си описана одна целочисленнаяпеременная z:
    int f(int x, int y) {        int z;        . . .    }
Локальные переменные и аргументы функцииадресуются относительно регистра FP, т.е. их адресаравны сумме содержимого FP и константы, задающей смещение.Чему равен адрес переменной z?
Пусть f(x) — целочисленная функция от целочисленногоаргумента. Определить,содержит ли следующий фрагмент программы ошибку(т.е. действительно ли тело цикла сохраняет инвариант):
// Программа корень функциицел a, b, c;. . .утверждение: a < b  и  f(a) * f(b) <= 0;// Значения функции на концах отрезка [a,b] разных знаковцикл пока b - a > 1| инвариант: f(a) * f(b) <= 0| // Делим отрезок [a, b] пополам| c := (a + b) / 2; // c -- целая часть (a+b)/2| если f(a) * f(c) < 0| | то    b := c;   // выбираем левую половину отрезка| | иначе a := c;   // выбираем правую половину отрезка| конец есликонец циклаутверждение: a == b - 1  и  f(a) * f(b) <= 0;
Где располагаются глобальные переменные?
Следующая программа вычисляет количествовхождений фрагмента "xyz" в последовательностьсимволов:
    последовательность символов p;    цел n;    символ c1, c2, c3;    . . .    n := 0;    // Инициализируем переменные c1, c2, c3 пробелами    c1 = ' '; c2 = ' '; c3 = ' ';    встать в начало последовательности p;    цикл пока есть непрочитанные элементы в посл-ти p    | c1 := c2; c2 := c3;    | прочесть очередной элемент посл-ти p в (вых: c3);    | если c1 == 'x' и c2 == 'y' и c3 == 'z'    | | то n := n + 1;    | конец если    конец цикла    ответ := n;
В ней используются четыре вспомогательные переменныеn, c1, c2, c3. Можно ли упроститьпрограмму, использовав меньшее количество вспомогательныхпеременных? (Последовательность разрешается читать только один раз.)
Где располагаются переменные, описанные внутрифункции, в описании которых отсутствуют модификаторы типа?
Пусть описан тип R2Vector, представляющий векторна плоскости с вещественными координатами:
    typedef struct {        double x;        double y;    } R2Vector;
также описаны три переменные u, v иw типа вектор и вещественная переменная s:
    R2Vector u, v, w;    double s;
при этом известно, что переменные u и vсодержат два конкретныхвектора единичной длины.Пусть в результате выполнения следующего фрагмента программызначение переменной s приблизительно равно 0.7071,т.е. корню из двух, деленному пополам:
    w.x = (-u.y); w.y = u.x;    s = v.x * w.x + v.y * w.y;    // s == 0.7071
На какой угол надо повернуть вектор u,чтобы получить вектор v?