0 / 0 / 0
Регистрация: 02.02.2014
Сообщений: 32
|
|||||||||||
1 | |||||||||||
Получение массива из функций14.09.2014, 21:39. Показов 827. Ответов 9
Метки нет (Все метки)
Здравствуйте! Объясните, а какая разница между этими функциями?
0
|
14.09.2014, 21:39 | |
Ответы с готовыми решениями:
9
Получение данных из функций и классов Получение адресов функций OpenGL Получение таблицы функций двух переменных Вызов, получение списка функций процесса из injection dll |
1123 / 794 / 219
Регистрация: 15.08.2010
Сообщений: 2,185
|
|
14.09.2014, 21:47 | 2 |
никакой
0
|
0 / 0 / 0
Регистрация: 02.02.2014
Сообщений: 32
|
|
14.09.2014, 22:14 [ТС] | 3 |
Совсем нет никакой разницы или отличия?
Тогда какой из них относится к хорошему стилю программирования? P.S. Кажется удобнее писать как на первом. Но все же интересует мнения специалистов)
0
|
18842 / 9841 / 2409
Регистрация: 30.01.2014
Сообщений: 17,284
|
|
14.09.2014, 22:24 | 4 |
Тут вообще ничего нельзя сказать без знания что такое chResult (это контейнерный класс, это массив, какой у него storage duration, какая политика владения ресурсом и т.д. и т.п.). И без знания о том в каком контексте существует функция getArray() (это метод, это свободная функция и т.д.).
0
|
0 / 0 / 0
Регистрация: 02.02.2014
Сообщений: 32
|
|
14.09.2014, 22:32 [ТС] | 5 |
Это обычная пользовательская функция.
Я имею ввиду возвращать массив из функций так "return имя_переменной" или же "return &имя_переменной[0]"? Какой вариант лучше использовать?
0
|
542 / 163 / 79
Регистрация: 23.09.2013
Сообщений: 316
|
||||||||||||||||
14.09.2014, 22:41 | 6 | |||||||||||||||
Если не привязываться к тому, что за тип у chResult (хотя это важно в любом случае) -
Не уверен, но возможно 2ой вариант может быть соптимизирован до 1ого варианта компилятором, но в общем случае - проще = лучше. Т.е. чем более простым и не запутанным, не нагромождённым будет Ваш код, тем лучше. Потому-что код чаще читают, нежели пишут. Добавлено через 4 минуты Сразу стоит Вас предостеречь - если время жизни массива определяется областью видимости функции
тогда возвращать адрес, указывающий на этот массив не следует, т.к. он будет указывать на уже освобождённую область памяти.
1
|
0 / 0 / 0
Регистрация: 02.02.2014
Сообщений: 32
|
|
14.09.2014, 22:46 [ТС] | 7 |
Melg, да я с вами абсолютно согласен)
Насчет этих функций, они все возвращают тип char *. Тогда проще использовать 1-ый вариант!?
0
|
542 / 163 / 79
Регистрация: 23.09.2013
Сообщений: 316
|
|
14.09.2014, 22:47 | 8 |
Nur-daulet, да.
0
|
0 / 0 / 0
Регистрация: 02.02.2014
Сообщений: 32
|
|
14.09.2014, 22:48 [ТС] | 9 |
Melg, Спасибо!
0
|
18842 / 9841 / 2409
Регистрация: 30.01.2014
Сообщений: 17,284
|
|
14.09.2014, 23:02 | 10 |
Melg, Вот именно. Об этом я и говорил и таких "если" еще вагон. Например, если эта функция класса, а массив член класса, то так возвращать можно. Если массив был создан с помощью new, то нужно продумывать политику владения после возврата (кто должен освобождать память), возможно возвращать нужно уже, например, умный указатель. Если мы возвращаем массив, который не оканчивается нулем (например int*), то предусматривать возможность получения его размера, тогда вообще ни один из вариантов может не подойти (а подойдет возврат через параметры, многие API именно так и делают). Если мы возвращаем массив, который является членом класса, то нужно также думать о константности. Ибо через такой указатель можно будет поменять внутреннее состояние класса (данные в массиве) без ведома самого класса. И еще тысяча "если".
Почему я все это написал? Потому что был поставлен вопрос о "хорошем стиле программирования". А ответ на него можно дать, только зная условия. Абстрактно о хорошем или плохом стиле в большинстве случаев говорить не получится.
1
|
14.09.2014, 23:02 | |
14.09.2014, 23:02 | |
Помогаю со студенческими работами здесь
10
инициализация массива, вывод массива и обработка массива должны быть реализованы с помощью функций. описание функций Win32 API получение имени компьютере GetComputerName получение массива из элементов исходного массива, стоящих на нечетных местах Получение массива Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |