Рубрики

ВОРОТА | GATE IT 2006 | Вопрос 49

Какой из приведенных ниже вариантов будет напечатан при выполнении следующей программы?

#include <stdio.h>

struct test {

               int i;

               char *c;

}st[] = {5, "become", 4, "better", 6, "jungle", 8, "ancestor", 7, "brother"};

main ()

    struct test *p = st;

    p += 1;

    ++p -> c;

    printf("%s,", p++ -> c);

    printf("%c,", *++p -> c);

    printf("%d,", p[0].i);

    printf("%s \n", p -> c);

(A) джунгли, n, 8, nclastor
(B) Etter, U, 6, Ungle
(С) cetter, k, 6, джунгли
(D) Etter, U, 8, Ncestor

Ответ: (Б)
Объяснение:

Основное требование — Знание структур

struct test *p = st;

st — это массив структур, в котором целое число — это переменная структуры «i», а массив символов — это переменная структуры «c».

p — указатель типа теста структуры, который указывает на массив структур (первый элемент). p содержит базовый адрес первой структуры в массиве st, т.е. {5, стать}.

p += 1;

Этот оператор увеличивает p на единицу, что означает, что p теперь указывает на следующую структуру (потому что p — указатель теста структуры типа, поэтому при увеличении его на единицу он переместится на одну структуру). p теперь указывает на {4, лучше}.

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

«->» — это оператор структуры, который получает член структуры, на которую ссылаются. Он имеет более высокий приоритет, чем увеличение / уменьшение (++, -) и операция разыменования (*).

Теперь краткое обсуждение пост-инкремента и оператора предварительного инкремента.

Оператор предварительного увеличения используется для увеличения значения переменной перед использованием в выражении. В Pre-Increment значение сначала увеличивается, а затем используется внутри выражения.

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

 ++p -> c; 

В этом утверждении оператор структуры (с более высоким приоритетом) сначала будет указывать p на переменную c внутри структуры. Теперь указатель находится внутри символьного массива, теперь при увеличении указателя в символьном массиве «c» будет перемещаться один символ в массиве символов. Следовательно, массив символов теперь начинается с «е».

p-> c перемещает указатель внутри структуры на переменную «c».

Рекомендуемые посты:

ВОРОТА | GATE IT 2006 | Вопрос 49

0.00 (0%) 0 votes