Указатель - некая переменная, значение которой является адресом другой переменной.
Адрес сам по себе является целым числом. Память под него выделяется как под целое. Но для нормальной работы с указателем необходимо знать тип переменной, адрес которой хранит указатель.
Унарная операция * позволяет извлечь содержимое ячейки, на которую "указывает" указатель.
Унарная операция & - получение адреса переменной.
В данном задании:
int a=8 - переменной a целого типа присвоили значение 8
int *b - объявили указатель b на переменную целого типа.
&a - извлекли адрес переменной a.
int *b=&a - буквально переводиться как "поместим адрес целой переменной a в переменную b типа указатель на целое".
*b=1+*b - получаем доступ к переменной, адрес которой храниться в b. Это равносильно такому выражению: a=1+a.
int a=8;//создаем переменную a и присваиваем ей значение 8
int *b;//создаем переменную *b типа указатель
b=&a;// присваиваем переменной b- адрес области памяти переменной а
b= &a // &- этот символ называется амперсанд, это операция , которая возвращает значение адреса переменной в области памяти, а операция * - позволяет получит значение по адресу,то есть переменной b присвоили значение адреса переменной а, а значит переменная *b уже хранит не адрес переменной а, а ее значение. А значит
после этой строки *b=1+*b мы увеличим значение а на 1.
Надеюсь, что я понятно объяснил.В любом случае рекомендую почитать про указатели и адреса в языке си, поскольку за ответ невозможно объяснить все нюансы .
Answers & Comments
Немного теории:
Указатель - некая переменная, значение которой является адресом другой переменной.
Адрес сам по себе является целым числом. Память под него выделяется как под целое. Но для нормальной работы с указателем необходимо знать тип переменной, адрес которой хранит указатель.
Унарная операция * позволяет извлечь содержимое ячейки, на которую "указывает" указатель.
Унарная операция & - получение адреса переменной.
В данном задании:
int a=8 - переменной a целого типа присвоили значение 8
int *b - объявили указатель b на переменную целого типа.
&a - извлекли адрес переменной a.
int *b=&a - буквально переводиться как "поместим адрес целой переменной a в переменную b типа указатель на целое".
*b=1+*b - получаем доступ к переменной, адрес которой храниться в b. Это равносильно такому выражению: a=1+a.
В итоге a=9
Ответ: a=9
Verified answer
Ответ:
a=9
Объяснение:
понятнее была бы запись такая :
int a=8;//создаем переменную a и присваиваем ей значение 8
int *b;//создаем переменную *b типа указатель
b=&a;// присваиваем переменной b- адрес области памяти переменной а
b= &a // &- этот символ называется амперсанд, это операция , которая возвращает значение адреса переменной в области памяти, а операция * - позволяет получит значение по адресу,то есть переменной b присвоили значение адреса переменной а, а значит переменная *b уже хранит не адрес переменной а, а ее значение. А значит
после этой строки *b=1+*b мы увеличим значение а на 1.
Надеюсь, что я понятно объяснил.В любом случае рекомендую почитать про указатели и адреса в языке си, поскольку за ответ невозможно объяснить все нюансы .