(int *) p = & l;
Строка выше не работает, потому что, как только вы приведете p
к (int*)
, результат анонимныйвременный объект, который является rvalue , а не lvalue ;следовательно, результат не может получить назначение, и даже если язык позволил это сделать, вы бы присваивали временно отлитую копию p
, а не оригиналу p
.
p = & ((char) l);
Строка выше не работает по аналогичной причине;результат (char) l
является временным объектом, который является копией l
, приведенной к типу char.Следовательно, поскольку он временный, вы не можете взять его адрес.
Insead, вы можете использовать:
p = (char*) &l