Отличие между значением указателя и значением, на которое ссылается указатель

Никак не могу понять, может кото-то подскажет? Написать программу на Си, демонстрирующую отличие между значением указателя и значением, на которое ссылается указатель. Для этого объявить переменную-указатель, зарезервировать под значение динамическую память, присвоить по адресу, содержащемуся в указателе, какое-либо значение. Напечатать значение указателя, размер памяти, занимаемой указателем, значение указателя со снятой ссылкой и размер памяти, занимаемой этим значением. Программу выполнить с использованием моделей памяти small и large.


Ответы (1 шт):

Автор решения: Artyomka

Перевожу комментарий в ответ:

Думаю аналогия понятна. Также можно сделать для других типов (short, long и тд), только вместо int нужно написать соответствующий тип, а также спецификаторы (%hd - short, %ld - long, %lld - long long).

Для полного понимания, рекомендую прочитать книгу - Язык программирования Си. Брайан Керниган, Деннис Ритчи.

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



int main()
{
    // Русская кодировка
    system("chcp 1251");
    system("cls");

    // Выделяем память для указателя
    int* pVar = NULL;
    pVar = (int*)malloc(sizeof(int));

    // Проверка на NULL (сейчас не обязательно, но рекомендуется так делать)
    if (pVar != NULL)
    {
        *pVar = 100;

        printf("Адресс указателя: %p\n", (void*)&pVar);
        printf("Размер указателя (байт): %zd\n", sizeof(pVar));
        printf("Значение указателя: %p\n", (void*)pVar);
        printf("Разыменованное значение указателя: %d\n", *pVar);
        printf("Размер разыменованного значения указателя (байт): %zd\n", sizeof(*pVar));
    }


    // Очистка ранее выделенной памяти
    free(pVar);
    pVar = NULL;


    return  0;

}
→ Ссылка