В приведенном ниже коде get_pic()
возвращает указатель uint8_t type
.
Затем в main()
вызывается get_pic()
, и его возвращаемое значение приводится к переменной address
, которая является unsigned int
.
Указатель, который возвращает get_pic()
, относится к глобальному массиву, который оказывается по адресу a8000f80
.
Мой вопрос в том, что адрес a8000f80
является 32-битным числом. Следовательно, как указатель, возвращаемый get_pic()
, может указывать на этот адрес, если он имеет тип uint8_t
, состоящий всего из 8 бит?
//Function declaration
uint8_t* get_pic(int *piclen);
main() {
unsigned int address, value;
address = (unsigned int) get_pic((int*)& value);
}
unsigned int
, не является соответствующим предположением. Если вам нужно сохранить указатель в целое число, используйтеintptr_t
илиuintptr_t
. И то строго только дляvoid *
... - person DevSolar   schedule 02.11.2016