Рубрики

ВОРОТА | GATE-CS-2015 (набор 1) | Вопрос 45

Каковы выходные данные следующего кода C? Предположим, что адрес x равен 2000 (в десятичном виде), а целое число требует четыре байта памяти.

#include <stdio.h>

int main()

   unsigned int x[4][3] = {{1, 2, 3}, {4, 5, 6}, 

                           {7, 8, 9}, {10, 11, 12}};

   printf("%u, %u, %u", x+3, *(x+3), *(x+2)+3);

}

(А) 2036, 2036, 2036
(Б) 2012, 4, 2204
(С) 2036, 10, 10
(Д) 2012, 4, 6

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

x = 2000

Since x is considered as a pointer to an 
array of 3 integers and an integer takes 4
bytes, value of x + 3 = 2000 + 3*3*4 = 2036

The expression, *(x + 3) also prints same 
address as x is 2D array.


The expression *(x + 2) + 3 = 2000 + 2*3*4 + 3*4
                            = 2036

Тест на этот вопрос

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

ВОРОТА | GATE-CS-2015 (набор 1) | Вопрос 45

0.00 (0%) 0 votes