URL: https://www.opennet.dev/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID9
Нить номер: 10219
[ Назад ]

Исходное сообщение
"Тип указателя"

Отправлено redd , 18-Апр-18 09:46 
Для чего указателю тип, ??
Заранее же известно что там будет, адрес объекта ..??

Содержание

Сообщения в этом обсуждении
"Тип указателя"
Отправлено izyk , 18-Апр-18 12:57 
> Для чего указателю тип, ??
> Заранее же известно что там будет, адрес объекта ..??

void *


"Тип указателя"
Отправлено PereresusNeVlezaetBuggy , 18-Апр-18 15:33 
> Для чего указателю тип, ??
> Заранее же известно что там будет, адрес объекта ..??

Чтобы знать, какого рода объект. Тем более, что без знания типа структуры, указатель на неё использовать проблематично.

ЦП ведь ничего не знает про массивы и структуры, он с ними со всеми работает по тому же принципу: база+смещение. Это просто фишка языка, добавляющая семантику, чтобы программист меньше тупил и ошибался.

Можете ради интереса посмотреть на Cello, например: http://libcello.org/


"Тип указателя"
Отправлено redd , 18-Апр-18 17:10 
Ok

"Тип указателя"
Отправлено Филимон Доходчивый , 18-Апр-18 17:30 
> Для чего указателю тип, ??
> Заранее же известно что там будет, адрес объекта ..??

Чтобы правильно реализовывать адресную арифметику. Например, инкремент указателя (не на void) сдвигает его не на байт, а на размер типа

int a[] = {0, 1, 2, 3, 4};
int *pa = a;

std::cout << *pa << std::endl;
pa = pa + 1;
std::cout << *pa << std::endl;
pa = pa + 1;
std::cout << *pa << std::endl;

std::cout << "size of int is " << sizeof(int) << std::endl;


"Тип указателя"
Отправлено redd , 18-Апр-18 18:38 
Надо попробовать, ...