Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Зачем компилятору языка С знать на какой тип указывает указатель.
|
|||
|---|---|---|---|
|
#18+
egorychSashaMercuryв конкретной операционной системе, может ли указатель в С/С++ на разные объекты занимать разный объём памяти. Если да, то приведите пожалуйста конкретный пример.да ё, размер указателя зависит от платформы, а не от языка. Поэтому, если платформа имеет указатели разного размера, то и язык, на ней реализованный, должен это позволять. Пример от WhiteOwl это никакой не UB, а вполне себе допустимая ситуация на 16-разрядных DOS ( и Windows16, кстати, тоже ). Стандарт не может постулировать размер указателя, очевидно же. Спасибо. Доброго времени суток C: ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.11.2014, 15:35 |
|
||
|
Зачем компилятору языка С знать на какой тип указывает указатель.
|
|||
|---|---|---|---|
|
#18+
.NETSashaMercuryХотя вот вам ещё пример. Код: plaintext 1. 2. в чём разница ? Поскольку a[10] - это указатель на int, то int* a[10] - это указатель на указатель на int, то есть int **a, насколько я понял. При увеличении этого указателя на 1, он сдвинется на количество байт равное длине указателя. А int (*b) [10] это указатель на 10 целых int, при увеличении его на 1, он сдвинется на sizeof(int)*10 байт. то что я выделил красным мне не очень понравилось. Код: plaintext 1. 2. что a,что a1 есть массивы из 10 указателей на int. а и a1 указатель на указатель. а как будет "читать" система второй участок кода ? Код: plaintext 1. PS тот алгоритм, что вы привели для функции swap, будет работать только для тех типов данных, для которых можно выполнить операцию побитового исключающего или(т.е. операнды функции будут целочисленные), вы не сможете, например, переделать его для double. с классической функцией таких проблем нет. Код: plaintext 1. 2. 3. 4. 5. 6. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.11.2014, 01:41 |
|
||
|
Зачем компилятору языка С знать на какой тип указывает указатель.
|
|||
|---|---|---|---|
|
#18+
... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.11.2014, 09:55 |
|
||
|
Зачем компилятору языка С знать на какой тип указывает указатель.
|
|||
|---|---|---|---|
|
#18+
Basil A. SidorovSashaMercuryЯ рассуждаю так. У нас есть определённая адресация реализованная для заданной ОС, потому я точно знаю, сколько байт занимает адрес(т.е. мы имеем константу для размера адреса памяти).Неправильно вы рассуждаете. В x86 - сегментная память, поэтому существуют NEAR16, NEAR32, FAR16 и FAR32. NEAR32 и FAR16 - одинаковы по размеру, но различаются по интерпретации. еще там есть huge... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.11.2014, 01:04 |
|
||
|
Зачем компилятору языка С знать на какой тип указывает указатель.
|
|||
|---|---|---|---|
|
#18+
MasterZivеще там есть huge...Это FAR16 с отдельными сегментами для стека и данных. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.11.2014, 05:04 |
|
||
|
Зачем компилятору языка С знать на какой тип указывает указатель.
|
|||
|---|---|---|---|
|
#18+
.NETТо есть можно ли создать в программе два указателя с разным размером. Чтобы sizeof(type1*) == sizeof(type2*) было ложно. В некоторых гарвардских архитектурах для некоторых моделей памяти размеры указателей различаются. Пример: AVR, компилятор IAR, размер указателя на память данных 8/16 бит, на память программ — 16/24 бит в зависимости от опций компиляции. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.11.2014, 10:57 |
|
||
|
|

start [/forum/topic.php?fid=57&msg=38807729&tid=2019233]: |
0ms |
get settings: |
10ms |
get forum list: |
14ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
36ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
49ms |
get tp. blocked users: |
1ms |
| others: | 296ms |
| total: | 426ms |

| 0 / 0 |
