Форум программистов, компьютерный форум CyberForum.ru

Где в памяти хранится тип указателя? - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Есть ли разница между Visual C++, Borland C++ и C++ Builder? http://www.cyberforum.ru/cpp-beginners/thread1246424.html
Какая разница между этими диалектами, или незнаю как это точно называется. И какой лучше?
C++ Как передать указатель функции, чтобы значение переменной изменилось? Имеются переменная и указатель на нее. int x, *y = &x; Как передать указатель ф-ии, чтобы значение переменной изменилось? http://www.cyberforum.ru/cpp-beginners/thread1246422.html
Вычислить выражение C++
Доброго времени суток всем.Подскажите,как реализовать вычисление данного выражения на С++.С помощью простейших операторов и цикла For. Составить программу вычисления выражения (((5^2-4^2)^2-3^2)^2-2^2)^2-1^2)^2
Ошибка "чтение памяти невозможно" во время перехода к строке с функцией C++
При запуске программы вижу ошибку "чтение памяти невозможно" во время перехода к строке с функцией ext() Не могу понять в чем дело, может просто с указателями неправильно работаю или еще что?! #include <iostream> #include <stdio.h> #include <conio.h> using namespace std; template <typename T> struct Node
C++ Зерно генерации для нормального распределения http://www.cyberforum.ru/cpp-beginners/thread1246412.html
Seed для normal distribution Влияет ли на генерируемую последовательномть с помощью std::normal_distribution зерно генерации srand(seed)?
C++ Нужен сайт с материалами, лекциями и примерами решения задач Здравствуйте, подскажите пожалуйста сайт, портал или что то подобное для изучения программирования на С++. Хотелось бы иметь место откуда можно почитать и посмотреть примеры... Поделитесь если не жалко... подробнее

Показать сообщение отдельно
Evg
Эксперт С++Автор FAQ
 Аватар для Evg
16821 / 5242 / 318
Регистрация: 30.03.2009
Сообщений: 14,118
Записей в блоге: 26
24.08.2014, 15:11     Где в памяти хранится тип указателя?
Цитата Сообщение от -NEURON- Посмотреть сообщение
Если я объявляю int* a, значит у этого А где - то храниться тип ?
Тип хранится в компиляторе на этапе компиляции. В коде в явном виде тип не существуют, тип преобразуется в некоторые числовые константы типа "размер типа", "смещение поля" или машинные операции, работающие над разными типами данных

Т.е. если на языке было написано

C
int *p;
p++;
то в коде ты увидишь, что берётся некоторый регистр (на котором лежит переменная-указатель 'p'), и к этому регистру прибавляется значение 4 (что соответствует размеру типа int). Ровно такой же код ты получишь, если p является указателем на unsigned int или float, поскольку эти типы так же имеют размер 4

C
struct s
{
  int a, b, c, d;
};
 
struct s *p;
 
p->c = 0;
здесь ты в коде увидишь, что берётся регистр с указателем, к нему прибавляется 8 (смещение поля 'c' в структуре 's') и в полученный адрес записывается 0.

C
1
2
3
4
int a, b;
float c, d;
a = a + b;
c = c + d;
в полученном коде ты увидишь две различные операции - целочисленного сложения и плавающего сложения.

Глядя на код обычно можно догадаться о типах данных в исходнике. Но только в результате размышлений. Напрямую в коде никакой информации о типах нет
 
Текущее время: 09:47. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru