* - этот оператор открывает доступ к значению ячейки памяти.
Если a=1; *b
b=&a - так мы присвоим адрес переменной a переменной b
printf("%d",*b) - выведем значение которая хранит ячейка памяти переменной a
Тогда что это значит b=(int*)a?

Модераторы: Hawk, Romeo, Absurd, DeeJayC, WinMain
Не знаю, зачем это и связяно ли с предыдущими примерами...lekha писал(а):Тогда что это значит b=(int*)a?
Потому что ты сам сказал компилятору, что значение в а - это адрес, что же ты хочешь увидеть? Если адрес, где хранится a, то напиши, например, так:lekha писал(а): И почему например, если я выдам эту конструкцию, будет показано не адрес этого числа, а значение, которое мы записали в этот адрес?
Код: Выделить всё
cout<<&a;
У типа не может быть адреса. Адрес может быть у переменной, собственно, что мы и наблюдаем." писал(а):Как вообще у типа может быть адрес?
Код: Выделить всё
#include <stdio.h>
#include <conio.h>
#include <string.h>
main()
{
int *a; int b=3;
a=(int*)b; // Мы рассматриваем число как адрес переменной b типа int, поэтому благодаря этой конструкции амперсанд
// не нужен???
printf("%d",a); // Почему при "*" здесь выскакивает ошибка?
getch();
}
Всякий адрес - это число. Чтобы это осознать, достаточно вывести через тот же printf значение переменной a(которая объявлена как int *a).lekha писал(а):// Мы рассматриваем число как адрес переменной b типа int,
То есть здесь мы задаем адрес переменной?Всякий адрес - это число. Чтобы это осознать, достаточно вывести через тот же printf значение переменной a(которая объявлена как int *a).
Эээ... Вопрос не понятен.lekha писал(а):То есть здесь мы задаем адрес переменной?