Предмет: Информатика,
автор: Kent1238
Помогите, пожалуйста, вопросы по языку Си
Совместимость типов указателей.
Каков результат операции вычитания, примененной к указателям одного типа?
Когда и зачем может повторно использоваться операция разыменования?
в интернете не нашлось
Ответы
Автор ответа:
0
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
Например:
// зададим фиксированные адреса:
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
Похожие вопросы
Предмет: Русский язык,
автор: user150917kz19
Предмет: Право,
автор: Teroxy
Предмет: Русский язык,
автор: dasha9012012
Предмет: Алгебра,
автор: A1fi