|
Возврат структуры из функции, косяк Кернигана-Ричи |
|
|
|
 |
Ответов
|
Feb 9 2015, 09:00
|
Гуру
     
Группа: Свой
Сообщений: 7 946
Регистрация: 25-02-05
Из: Moscow, Russia
Пользователь №: 2 881

|
Цитата(ViKo @ Feb 9 2015, 11:52)  Если можно выдать структуру, то почему нельзя выдать аналогичным образом массив? Можно. Для этого он должен быть внутри структуры, которая может быть из одного массива. А аналогичным образом нельзя потому, что массив есть указатель на кусок предвыделенной на этапе компиляции памяти. А структура - есть сам набор данных, а не указатель на него. Поэтому "return <массив>" - ошибочен, так как получается требование возврата указателя, возможно на локальный буфер, время жизни которого кончается с выходом из ф-ции. А "return <структура>" - корректно, так как это требования возврата самих данных, хранящихся в структуре, а не указателя на структуру. Поэтому присваивания и возвраты массивов изначально не предусмотрены, а структур - пожалуйста.
|
|
|
|
|
Feb 9 2015, 09:09
|

Универсальный солдатик
     
Группа: Модераторы
Сообщений: 8 634
Регистрация: 1-11-05
Из: Минск
Пользователь №: 10 362

|
Цитата(SM @ Feb 9 2015, 12:00)  А аналогичным образом нельзя потому, что массив есть указатель на кусок предвыделенной на этапе компиляции памяти. А структура - есть сам набор данных, а не указатель на него. Поэтому "return <массив>" - ошибочен, так как получается требование возврата указателя, возможно на локальный буфер, время жизни которого кончается с выходом из ф-ции. А "return <структура>" - корректно, так как это требования возврата самих данных, хранящихся в структуре, а не указателя на структуру. Поэтому присваивания и возвраты массивов изначально не предусмотрены, а структур - пожалуйста. Кто же им (K&R) мешал сделать структуры и массивы одинаковыми в смысле обращения к ним - или адрес, или агрегатный тип данных? Допустим, получили результат функции - структуру. Единственное, что приходит на ум - сохранить ее в своей (локальной, глобальной) переменной - структуре. И потом использовать ее отдельные члены. К чему вся эта чехарда? Цитата(andrew_b @ Feb 9 2015, 12:05)  Вас же не смущает возврат, например, целого числа. Почему вас смущает возврат структуры? Число или указатель передается одним регистром.
|
|
|
|
Сообщений в этой теме
ViKo Возврат структуры из функции Feb 9 2015, 07:04 Grizzzly Цитата(ViKo @ Feb 9 2015, 10:04) Как это ... Feb 9 2015, 07:26 jcxz Цитата(Grizzzly @ Feb 9 2015, 13:26) Комп... Feb 9 2015, 12:09  SM Цитата(jcxz @ Feb 9 2015, 15:09) Не смотр... Feb 9 2015, 12:41   Grizzzly Цитата(SM @ Feb 9 2015, 15:41) а вот фраг... Feb 9 2015, 12:45  Grizzzly Цитата(jcxz @ Feb 9 2015, 15:09) Не смотр... Feb 9 2015, 12:42   SM Цитата(Grizzzly @ Feb 9 2015, 15:42) Возм... Feb 9 2015, 12:43 ViKo Тогда это должно называться возврат указателя на с... Feb 9 2015, 07:45 Bear_ku Цитата(ViKo @ Feb 9 2015, 12:45) Тогда эт... Feb 9 2015, 08:52 Bear_ku А вы дерзкий! Я бы не решился возвращать из фу... Feb 9 2015, 08:15 SM Цитата(Bear_ku @ Feb 9 2015, 11:15) А вы ... Feb 9 2015, 08:29  ar__systems Цитата(SM @ Feb 9 2015, 03:29) А никто та... Mar 13 2015, 15:17   XVR Цитата(ar__systems @ Mar 13 2015, 18:17) ... Mar 16 2015, 12:21   SM Цитата(ViKo @ Feb 9 2015, 12:08) Единстве... Feb 9 2015, 09:11   SSerge Цитата(ViKo @ Feb 9 2015, 16:09) Кто же и... Feb 9 2015, 09:33 andrew_b Вас же не смущает возврат, например, целого числа.... Feb 9 2015, 09:05 ViKo Будем считать что я осознал и раскаялся... (хотя р... Feb 9 2015, 09:27 SM Цитата(ViKo @ Feb 9 2015, 12:27) Я же не ... Feb 9 2015, 09:34
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|