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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 02.08.2015, 22:48   #11
Krasiosoft
Форумчанин
 
Аватар для Krasiosoft
 
Регистрация: 01.06.2015
Сообщений: 497
По умолчанию

Это смотря для каких целей нужно. Само значение переменной можно вернуть, но если переменная охватывает все возможные значения, т.е. мы не можем вернуть такое значение, по которому будет понятно, была ошибка или нет. В таком случае все равно нужно будет передавать в функцию ссылку или указатель на переменную, в которую нужно будет записать это значение, ну или же возвращать структуру.

В данной функции, переменная не охватывает все возможные значения, т.к. является длиной строки. Если вернуть 0, то будет понятно, что строка была пустой.
Если помог, буду очень благодарен за Ваш отзыв (весы в левой нижней части сообщения).

Последний раз редактировалось Krasiosoft; 02.08.2015 в 23:12.
Krasiosoft вне форума Ответить с цитированием
Старый 03.08.2015, 16:39   #12
Алексей_2012
t45t
Участник клуба
 
Аватар для Алексей_2012
 
Регистрация: 20.03.2012
Сообщений: 1,849
По умолчанию

Цитата:
ну или же возвращать структуру
очень извиняюсь, но о какой структуре идет речь? В моем понимании структура описывается в области struct.


Цитата:
МойКласс new_obj; - Резервируется в стеке, не требует создания и освобождения.
МойКласс *new_obj; - Указатель. Требует создания и освобождения. Размещается в куче.
тогда чем лучше использовать второй вариант, чем первый?

МБ я делфист и мне СИшных заморочек не понять?
from dark to light)
Алексей_2012 вне форума Ответить с цитированием
Старый 03.08.2015, 17:09   #13
Krasiosoft
Форумчанин
 
Аватар для Krasiosoft
 
Регистрация: 01.06.2015
Сообщений: 497
По умолчанию

Цитата:
Сообщение от Алексей_2012 Посмотреть сообщение
о какой структуре идет речь?
Например, функция считывает 1 байт с какого-то файла и возвращает его. Казалось бы можно сделать функцию, которая возвращает чисто unsigned char, но нет, нужно учитывать то, что файл мог не существовать или не открыться. Поэтому нужно делать функцию, в которую будут передан указатель или ссылка на переменную типа unsigned char, а сама функция будет возвращать bool, по которому можно будет определить, смогла функция прочесть 1 байт с файла или нет.
Код:
bool ReadByte(unsigned char *bytePtr);
Или же использовать структуру:
Код:
struct myStruct{
    bool status;
    unsigned char ByteFromFile;
};
тогда функция будет возвращать структуру:
Код:
myStruct ReadByte();
Цитата:
Сообщение от Алексей_2012 Посмотреть сообщение
тогда чем лучше использовать второй вариант, чем первый?
Для разных ситуаций по-разному. Например, по первому варианту вы не сможете в цикле создать несколько объектов класса и записать их в массив.

А в Delphi это не так что ли было?
Если помог, буду очень благодарен за Ваш отзыв (весы в левой нижней части сообщения).
Krasiosoft вне форума Ответить с цитированием
Старый 03.08.2015, 17:10   #14
crazy horse
ios developer
Старожил
 
Аватар для crazy horse
 
Регистрация: 16.11.2007
Сообщений: 2,885
По умолчанию

Простое гугление даст вам миллион вариантов одних и тех же ответов на ваш вопрос.
http://ru.stackoverflow.com/question...B5%D0%BB%D0%B8
Или вам просто поговорить охота?
Цитата:
А в Delphi это не так что ли было?
В делфи по-моему есть ссылки, указателей нет. Хотя, и по аналогии с ними должно бы быть понятно человеку.
Делайте что хотите, но чтобы через полчаса в лесу было светло, сухо и медведь!

Последний раз редактировалось crazy horse; 03.08.2015 в 17:17.
crazy horse вне форума Ответить с цитированием
Старый 03.08.2015, 17:21   #15
JUDAS
фонатик DELPHI
Форумчанин
 
Аватар для JUDAS
 
Регистрация: 14.01.2008
Сообщений: 714
По умолчанию

Цитата:
Сообщение от Krasiosoft Посмотреть сообщение
Н
А в Delphi это не так что ли было?
Красиософт, в отличии от с++ делфи вот такой код

Код:
type
  PValue = ^TValue;
  TValue = record
     v : integer;
   end;

procedure TForm1.FormCreate(Sender: TObject);
var value : PValue;
begin
  New(value);
  value^.v := 1;
  Dispose(value);
end;
считается как минимум кодом сишника-перебежчика, как максимум говнокодом, а вот аналог

Код:
procedure TForm1.FormCreate(Sender: TObject);
var value :record
        v : integer;
   end;
begin
  value.v := 1;
end;
95% сбоев и ошибок приложений, находится в полу метрах от монитора
JUDAS вне форума Ответить с цитированием
Старый 03.08.2015, 17:55   #16
Krasiosoft
Форумчанин
 
Аватар для Krasiosoft
 
Регистрация: 01.06.2015
Сообщений: 497
По умолчанию

В c++ так тоже никто не делает, вы правильно сказали, что это больше похоже на говнокод. Вариант на c++:
Код:
typedef struct Value{
    int v;
}TValue, *PValue;

void func(){
    PValue tempStruct = new TValue;
    tempStruct->v=1;
    delete tempStruct;
}
но какой смысл писать так, если можно:
Код:
void func(){
    TValue tempStruct;
    tempStruct.v=1;
}
аналогично и в Delphi.

Насчет второго варианта, я немного не понял. А как можно будет принимать в функцию или возвращать функцией так описанную структуру?

Вот только я не могу понять, что автору темы не понятно
Если помог, буду очень благодарен за Ваш отзыв (весы в левой нижней части сообщения).
Krasiosoft вне форума Ответить с цитированием
Старый 03.08.2015, 20:37   #17
JUDAS
фонатик DELPHI
Форумчанин
 
Аватар для JUDAS
 
Регистрация: 14.01.2008
Сообщений: 714
По умолчанию

Цитата:
Сообщение от Krasiosoft Посмотреть сообщение
Насчет второго варианта, я немного не понял. А как можно будет принимать в функцию или возвращать функцией так описанную структуру?:
во, чёткий вопрос на который я отвечу встречным вопросом от чайника в с++ к спецу в с++ (то есть к тебе) + вопрос прямо соотвествует теме, то есть как переписать функцию из формата зябликов в формат нормальных переменных....

Смотри, заказчик предложил мне писать вот так
Код:
TMyStruct& getstruct(TInStruct& value)
вместо вот этого
Код:
TMyStruct * getstruct(const TInStruct * value)
теперь поясни мне чем отличаются эти строки, или это та же мошонка в профиль ?

п.с.... хотя зябликов не преуменьшилось , как говорится "с++" могила исправит
95% сбоев и ошибок приложений, находится в полу метрах от монитора
JUDAS вне форума Ответить с цитированием
Старый 03.08.2015, 20:56   #18
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,792
По умолчанию

Цитата:
считается как минимум кодом сишника-перебежчика, как максимум говнокодом
Ниче подобного. Либо это стереотип, на котором ты глупо и необдуманно играешь, либо ты и сам не в состоянии определить говнокод от "нормального" кода.
Вот тебе для примера:
Код:
procedure blabla;
begin
 with TStringList.Create do begin
  ...
  Free;
 end;
end.
А теперь скажи: Это говнокод?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 03.08.2015, 21:08   #19
JUDAS
фонатик DELPHI
Форумчанин
 
Аватар для JUDAS
 
Регистрация: 14.01.2008
Сообщений: 714
По умолчанию

Цитата:
Либо это стереотип..
тебе даже Сишник ответил что это говнокод в Паскале, а я поставил опередённый рамки от "перебежчик" до "говнокод"

Код:
А теперь скажи: Это говнокод?
нет не говнокод, это нормальное явление для Паскаля.
А работа с указателями, как в примере выше, это диагноз хронического Сишника. Сишники они не могут без указателей.
+добавил

Stilet. У меня очень простые и очень прозрачные рамки определения говнокода в Делфи.
Делфи содержит кучу исходников компонент и самой делфи. Так вот, если стиль программиста равен(=) стилю авторов самого Делфи (то есть из Борланда) это корректный стиль, всё остальное некорректный стиль.
У тебя например, корректный стиль, у Миная вообще красивый стиль ,а то что выше - говнокод которого нет в исходниках Делфи, а если и есть то только для связи с какими то Сишными (включая системные) функциями. В теме про говнокод (ветка свободное общение) я изрыгаю только реальный говнокод по отношению к коду Делфи.

---------
Стилет, ты лучше ответь на пост выше (если шаришь в С++) чем верхзняя строка от нижней отличается ? обе компилятся и обе работают с одним и тем же вызовом но в первой зябл "и", а во второй зябл "звёздочка". Аналог бы мне на Делфи
95% сбоев и ошибок приложений, находится в полу метрах от монитора

Последний раз редактировалось JUDAS; 03.08.2015 в 21:17.
JUDAS вне форума Ответить с цитированием
Старый 03.08.2015, 21:50   #20
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,792
По умолчанию

Цитата:
это нормальное явление для Паскаля.
Работа с указателем и там и там. Работа с кучей и там и там. И там и там создается и освобождается память. В чем же говонокод?
Цитата:
работа с указателями, как в примере выше, это диагноз хронического Сишника. Сишники они не могут без указателей.
Это очередной стереотип? Жесть...
Цитата:
если стиль программиста равен(=) стилю авторов самого Делфи (то есть из Борланда) это корректный стиль, всё остальное некорректный стиль.
Ну и рамки... Чет как-то ограниченно, тебе не кажется?
Цитата:
У тебя например, корректный стиль
Я консерватор! Попрошу не забывать. И да, я приобрел свой стиль у Вирта в паскале и обероне, и Делфи от борланда. Я представитель субъективно-консервативной религии, которая не способна собрать что-то типа Хаскела или эрланга. Хотя я и не совсем однозначно консерватизма придерживаюсь, я не показатель замеров индоскриптинга. По крайней мере я к индокоду в исходниках отношусь либерастно.
Цитата:
лучше ответь на пост выше
Из того, что я знаю про си:
TInStruct& value равноценно var value:TInStruct
const TInStruct * value равноценно value:^TInStruct
I'm learning to live...
Stilet вне форума Ответить с цитированием
Ответ


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

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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
указатели salmon172 Паскаль, Turbo Pascal, PascalABC.NET 0 31.05.2011 21:34
указатели Артэс Общие вопросы C/C++ 4 07.09.2010 11:08
Указатели Анютик_sexi Помощь студентам 3 16.06.2010 14:38
Указатели AquaticSoul Общие вопросы C/C++ 5 22.12.2009 15:13
[C] массивы, указатели, двойные указатели. Iggel Общие вопросы C/C++ 5 05.05.2009 12:39