Рекомендации. Не рассматривайте приведенные ниже вопросы как проверку преподавателем ваших знаний
Не рассматривайте приведенные ниже вопросы как проверку преподавателем ваших знаний. Бессмысленно подсматривать где-то ответы. Бессмысленно также пытаться сразу трассировать приводимые программы – это приведет только и единственно к тому, что вы не сможете оценить, разбираетесь вы теперь в указателях или нет. Рекомендуется для каждого вопроса, используя бумагу и ручку, нарисовать содержимое всех переменных и его изменение, после этого предсказать ответ, и только после этого обязательно внести приводимый кусок кода в любую программу и посмотреть, что получается на самом деле. Несовпадение ваших ожиданий является показателем того, что вы не до конца разобрались в указателях.
Вопросы 1. int a = 2; int b = 3; int t = a; a = b; b = t; // Внимание, вопрос: чему равны значения a, b и t?
2. int a = 2; int *pa; pa = &a; int b = *pa; a = 3; // Внимание, вопрос: чему равны значения a и b?
3. int a = 2; int b = 3; int *pa = &a; int *pb = &b; *pa = *pb; // Внимание, вопрос: чему равны значения a, b, pa, pb?
4. int a = 2; int b = 3; int *pa = &a; int *pb = &b; pa = pb; // Внимание, вопрос: чему равны значения a, b, pa, pb?
5. int a[3] = {6,5,4}; int *b = a++; // Внимание, вопрос: чему равны значения *(a+2), (*a)+2, *a+2, *b?
[1] Первокурсникам, разумеется, не обязательно знать, что можно обратиться еще и к словам и двойным словам, и так далее. [2] Конечно, тяжелую правду первокурсникам знать не обязательно:)
|