реклама на сайте
подробности

 
 
> Возврат структуры из функции, косяк Кернигана-Ричи
ViKo
сообщение Feb 9 2015, 07:04
Сообщение #1


Универсальный солдатик
******

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



Перечитывая книжку классиков по программированию на языке С, обнаружил, что они возвращают из функции целую структуру. Конкретно, структуру из двух координат точки. Как это (возможно)?
У Шилдта этот вопрос вежливо замалчивается...
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
Bear_ku
сообщение Feb 9 2015, 08:15
Сообщение #2


Частый гость
**

Группа: Участник
Сообщений: 154
Регистрация: 9-09-11
Пользователь №: 67 076



А вы дерзкий! Я бы не решился возвращать из функции указатель на локальную переменную )
Go to the top of the page
 
+Quote Post
SM
сообщение Feb 9 2015, 08:29
Сообщение #3


Гуру
******

Группа: Свой
Сообщений: 7 946
Регистрация: 25-02-05
Из: Moscow, Russia
Пользователь №: 2 881



Цитата(Bear_ku @ Feb 9 2015, 11:15) *
А вы дерзкий! Я бы не решился возвращать из функции указатель на локальную переменную )

А никто так и не делает. Возвращают данные, которые компилятор неявно копирует из локальной переменной в lvalue, указатель на который также неявно передается в ф-цию. То есть, возвращаются только данные.
Go to the top of the page
 
+Quote Post
ar__systems
сообщение Mar 13 2015, 15:17
Сообщение #4


self made
****

Группа: Свой
Сообщений: 855
Регистрация: 7-03-09
Из: Toronto, Canada
Пользователь №: 45 795



Цитата(SM @ Feb 9 2015, 03:29) *
А никто так и не делает. Возвращают данные, которые компилятор неявно копирует из локальной переменной в lvalue, указатель на который также неявно передается в ф-цию. То есть, возвращаются только данные.


Компилятор ничего подобного не делает, и никаких "неявных адресов возврата" в функцию не передается.

Функция находит свои параметры, локальные переменные и результат относительно указателя стека.


Цитата(Grizzzly @ Feb 9 2015, 07:42) *
В компиляторе VC 2005 в функцию передается на регистре адрес зарезервированный области. Возможно, в более поздних версиях и других компиляторах этого нет.

Какой еще зарезервироавнной области? Что вы такое говорите? "С" calling convention никто не отменял и компилятор того что вы говорите просто не может делать. Я думаю вы неправильно поняли листинг.
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- 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
|- - XVR   Цитата(ar__systems @ Mar 13 2015, 18:17) ...   Mar 16 2015, 12:21
- - ViKo   Ничего не понимаю. То, что передается в функцию, н...   Feb 9 2015, 08:52
|- - SM   Цитата(ViKo @ Feb 9 2015, 11:52) Если мож...   Feb 9 2015, 09:00
|- - ViKo   Цитата(SM @ Feb 9 2015, 12:00) А аналогич...   Feb 9 2015, 09:09
|- - SM   Цитата(ViKo @ Feb 9 2015, 12:08) Единстве...   Feb 9 2015, 09:11
|- - andrew_b   Цитата(ViKo @ Feb 9 2015, 12:09) Число ил...   Feb 9 2015, 09:13
|- - 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


Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 21st August 2025 - 00:54
Рейтинг@Mail.ru


Страница сгенерированна за 0.01419 секунд с 7
ELECTRONIX ©2004-2016