Составные типы

Задания раздела 2.3.3
2.25. Определите типы и значения каждой из следующих переменных:
(a) int* ip, &r=ip;
(b) int i, *ip=0;
(c) int* ip, ip2;

p95_ex2-3-3

Многие программисты не понимают взаимодействия базового и модифицированного типа (составного?), который может быть частью оператора объявления.
Ну да, я не программист, вот взял в руки книжку и уже аж на 95! странице. Объясните же наконец что да как.
Ранее я говорил, что запись базового типа и модификаторов кажутся мне немного странными, и что тип составной - не совсем ясно:
int i=1024, *p=&i, &r=i;
Ошибочно считать, что в выражении int* i, i; обе переменные в объявлении - указатели. первая i - указатель, вторая i - обычная переменная типа int. Как устроен компилятор, который читает и всё это понимает? Неужели он умнее меня? (скорее всего да).  Чувствую, не там искусственный интеллект ищут.
Получается, что составным тип становится только для какой-то определенной переменной, перед которой стоит спецзнак * и только для неё.

2.25. Определите типы и значения каждой из следующих переменных:
(a) int* ip, &r=ip;
(b) int i, *ip=0;
(c) int* ip, ip2;

(a) int* ip, &r=ip; /* ip - указатель на тип int; а вот со ссылкой промашка - неправильное выражение. Ссылку на указатель следует записывать так *&r=ip; (про это есть в конце темы (ссылки)*/
(b) int i, *ip=0; // переменная i типа int, нулевой указатель ip типа int;
(c) int* ip, ip2; //ip - указатель на тип int; ip2 - переменная типа int

Добавить комментарий