Вывести целочисленное значение, используя символьный указатель в c - PullRequest
1 голос
/ 20 января 2020

У меня есть небольшое сомнение в типизации. Здесь я вставляю свой пример кода.

#include <stdio.h>

int main()
{
    int i=1100;
    char *ptr=(char*)&i;

    printf("Value of int =%d\n",(int*)(*ptr));
    return 0;
}

У меня есть типизация в двух точках. Во-первых,

char *ptr=(char*)&i;

Во-вторых,

printf("Value of int =%d\n",(int*)(*ptr));

, чтобы избежать предупреждений компиляции.

Когда я его распечатал, я получил вывод как

Value of int =76

Я знаю тот факт, что нам нужно назначить адрес значений правильному типу указателей, чтобы правильно его определить.

Я сомневаюсь,

  1. Можно ли напечатать значение 1100, используя символьный указатель? Если да, то как?

Я ожидаю от вас четкого ответа. Пожалуйста, помогите в этом.

1 Ответ

1 голос
/ 20 января 2020

В вашем коде вы приводите после , он уже разыменовал указатель, поэтому он просто приводит char. Сначала наведите указатель, например, так:

*((int*)ptr)

Но, тем не менее, это не рекомендуемая стратегия. Если вы хотите действительно универсальный тип указателя, используйте void*, который не разрешает разыменование, пока оно не приведено.

...