Отличие между значением указателя и значением, на которое ссылается указатель
Никак не могу понять, может кото-то подскажет? Написать программу на Си, демонстрирующую отличие между значением указателя и значением, на которое ссылается указатель. Для этого объявить переменную-указатель, зарезервировать под значение динамическую память, присвоить по адресу, содержащемуся в указателе, какое-либо значение. Напечатать значение указателя, размер памяти, занимаемой указателем, значение указателя со снятой ссылкой и размер памяти, занимаемой этим значением. Программу выполнить с использованием моделей памяти small и large.
Ответы (1 шт):
Перевожу комментарий в ответ:
Думаю аналогия понятна. Также можно сделать для других типов (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;
}