Вопросы по языку си совместимость типов указателей. каков результат операции вычитания, примененной к указателям одного типа? когда и зачем может повторно использоваться операция разыменования? в интернете не нашлось
1) Разность: получится число переменных данного типа, которые смогли бы поместиться между адресами, на которые указывают указатели. Например: // зададим фиксированные адреса: int p1 = (int *)0x1000; int p2 = (int *)0x1004; int e = p2 - p1; Здесь 'e' = 1, т.е. равно числу переменных типа 'int', поместившихся бы между адресом 0x1000 и 0x1004. 2) Когда имеет место косвенная адресация, т.е. один указатель ссылается на другой, а тот - на переменную. Тогда, чтобы изменить значение переменной через 1-ый указатель мы используем разыменование 2 раза: int a; int *p1 = &a; int **p2 = &p1; **p2 = 10; // => a = 10
1. Допустим,что учитель сказал правду Савелию, тогда у Савелия оценка 4 или 3. У Виталия тогда оценка 3, так как учитель ошибся, а у Аркадия или 5 или 4. Савелий-4 Виталий-3 Аркадий-5. ЭТО ВОЗМОЖНО!
2. Допустим, что учитель сказал правду Виталию, тогда у него оценка 4 или 5, тогда у Савелия 5, а у Аркадия 4 или 5, так как учитель ошибся. Савелий-5 Виталий-4 или 5 Аркадий-4 или 5 НЕ У КОГО НЕТ ОЦЕНКИ 3, А ЭТОГО БЫТЬ НЕ МОЖЕТ
3.Допустим, что учитель сказал правду Аркадию, тогда у него оценка 3, тогда у Савелия 3 или 4, так как учитель ошибся, а у Виталия оценка 3, так как учитель ошибся. Савелий-3 или 4 Виталий-3 Аркадий-3 НЕ У КОГО НЕТ ОЦЕНКИ 5,А ЭТОГО БЫТЬ НЕ МОЖЕТ. ответ: Савелий-4 Виталий-3 Аркадий-5
Например:
// зададим фиксированные адреса:
int p1 = (int *)0x1000;
int p2 = (int *)0x1004;
int e = p2 - p1;
Здесь 'e' = 1, т.е. равно числу переменных типа 'int', поместившихся бы между адресом 0x1000 и 0x1004.
2) Когда имеет место косвенная адресация, т.е. один указатель ссылается на другой, а тот - на переменную. Тогда, чтобы изменить значение переменной через 1-ый указатель мы используем разыменование 2 раза:
int a;
int *p1 = &a;
int **p2 = &p1;
**p2 = 10; // => a = 10