2016-05-15 4 views
2

Я пытаюсь получить значение данных, указанное указателем const void. Я написал этот простой пример, чтобы получить другой способ. Но по какой-то причине это не сработает. Фактически я хочу, чтобы printf записывал «данные 5 и адрес указателя» Может ли кто-нибудь мне помочь?получить содержимое const void

Благодаря

Вот код

#include <stdio.h> 
#include <stdlib.h> 

int main(){ 
    const void * data; 
    int b = 5; 
    data = &b; 
    printf("data %d %p ",&data,&data); 
} 
+1

Если вы хотите интерпретировать данные, вам необходимо знать (и таким образом дать) свой * тип *. Не используйте 'void'. C не имеет встроенного механизма для идентификации типа данных вне системы статического типа. –

+0

'printf (" data% d% p ", * (const int *) data, &data);' – BLUEPIXY

+0

«* (const int *)» перед тем, как данные решают эту благодарность – kevin556

ответ

5

data содержит адрес b. Чтобы распечатать этот адрес с %p, просто перейдите data. &data is является адресом data, а не адресом b.

Для того, чтобы получить это предложение по электронной почте, необходимо переузирать data с помощью *data. Но есть улов. Вы не можете разыскивать указатели void, потому что их тип данных неизвестен. Чтобы получить значение int по этому адресу, сначала необходимо отправить const void * в const int *. Затем вы можете разыменовать результат.

printf("data %d %p\n", *(const int *) data, data); 
Смежные вопросы