Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 29.09.2008, 22:13   #1
Scratch
Пользователь
 
Аватар для Scratch
 
Регистрация: 25.09.2008
Сообщений: 40
По умолчанию Зачем указателю тип?

Объясните бестолковому зачем указателю нужен тип, ведь он всеравно принимает тип того объекта, на который указывает((
Scratch вне форума Ответить с цитированием
Старый 29.09.2008, 22:20   #2
vvviperrr
Тупой студент
Форумчанин
 
Аватар для vvviperrr
 
Регистрация: 12.05.2007
Сообщений: 614
По умолчанию

ну хотя бы для разыменовки указателя. откуда компилятор будет знать, сколько байт из памяти считать?
vvviperrr вне форума Ответить с цитированием
Старый 29.09.2008, 22:47   #3
Scratch
Пользователь
 
Аватар для Scratch
 
Регистрация: 25.09.2008
Сообщений: 40
По умолчанию

Цитата:
Сообщение от vvviperrr Посмотреть сообщение
ну хотя бы для разыменовки указателя. откуда компилятор будет знать, сколько байт из памяти считать?
Нет, ну вот есть к примеру: A * myA = new B
Если B наследник класса А то myA будет иметь только то, что есть внутри А, а если так: B * myA = new B, то myA будет иметь тоже самое+то, что есть в классе B.
Значит тип указателя здесь тоже для чего-то нужен. я прав?
Scratch вне форума Ответить с цитированием
Старый 30.09.2008, 00:39   #4
filosof_x86
...
Форумчанин
 
Аватар для filosof_x86
 
Регистрация: 01.06.2008
Сообщений: 134
По умолчанию

Цитата:
Сообщение от Scratch Посмотреть сообщение
Объясните бестолковому зачем указателю нужен тип, ведь он всеравно принимает тип того объекта, на который указывает((
Затем же, что и простой переменной – как обрабатывать данные, какие операции допустимы и т.д.
С++ - язык строгой статической типизации.

Цитата:
Сообщение от Scratch Посмотреть сообщение
Значит тип указателя здесь тоже для чего-то нужен. я прав?
Да. Тип говорит компилятору, что можно делать с объектом.

P.S. еще раз настоятельно советую сменить книгу, по которой учитесь.

Последний раз редактировалось filosof_x86; 30.09.2008 в 00:41.
filosof_x86 вне форума Ответить с цитированием
Старый 30.09.2008, 02:21   #5
Scratch
Пользователь
 
Аватар для Scratch
 
Регистрация: 25.09.2008
Сообщений: 40
По умолчанию

Цитата:
Сообщение от filosof_x86 Посмотреть сообщение
P.S. еще раз настоятельно советую сменить книгу, по которой учитесь.
Я не по книге, я самоучкой пытаюсь, по статьям в инете и на примерах.
Scratch вне форума Ответить с цитированием
Старый 30.09.2008, 11:48   #6
Gaspar312
Пользователь
 
Регистрация: 21.09.2008
Сообщений: 10
По умолчанию

указателю нужен тип объекта для того, 4тобы знать на сколько байтов передвигаться в памяти до след. объекта, ведь они(объекты) могут иметь разный размер, например:
1) char *s
2) long int *s
в первом случае указатель s имеет тип char, размер кот. равен 1 byte, поэтому компилятор должен увеличить указатель на 1 byte, чтобы получить след.объект.
во втором случае указатель s имеет тип long(long int), размер кот. равен 4 byte, поэтому компилятор должен увеличить указатель на 4 byte, чтобы перейти к след.объекту.
если бы компилятор не знал типа объекта во втором случае и увеличил указатель на 1 byte, то тогда это не будет след.объектом, а будет просто мусором или это будут 2,3,4 байты первого объекта + 1-ый байт след.объекта.
ПС: все это справедливо, если память продолжительная/последовательная:
memory: | 1st byte | 2nd byte | 3rd byte | ... | ... | n-th byte |

Последний раз редактировалось Gaspar312; 30.09.2008 в 11:53.
Gaspar312 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Передача данных в функцию по указателю Игорь007 Общие вопросы C/C++ 2 23.06.2008 20:17
Зачем принтеру процессор? Иллидан Компьютерное железо 6 21.05.2008 20:11
данные о видеосистеме: тип видеоадаптера, тип монитора, режим монитора: разрешение, частота обновления WaxeP Win Api 9 15.04.2007 18:12
как вызвать в Dll по указателю функцию, которая определена в главном потоке? SaintRain Общие вопросы Delphi 1 25.11.2006 08:27