Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
K&R 5.8 Массивы указателей
|
|||
|---|---|---|---|
|
#18+
SashaMercury, а операция *(a+i) будет одинаково по скорости с a[i] вычисляться ? Ты должен уже знать, что a[i] по определению *(a+i). Значит вопрос не имеет смысла. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.02.2014, 16:09 |
|
||
|
K&R 5.8 Массивы указателей
|
|||
|---|---|---|---|
|
#18+
SashaMercuryа операция *(a+i) будет одинаково по скорости с a[i] вычисляться ? Скоре всего да. От компилятора зависит, у меня одинаково откомпилировалось. SashaMercuryмне почему-то нравится писать *(a+i), я как-будто бы руками щупаю память, а не в перчатках. тогда уходи от этих суррогатов и пользуйся только указателями тоже самое с указателями Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. PS Тут я слегка поправил твой алгоритм. нет смысла считать temp. У тебя получается temp != weight_array-1 только в случае если была хоть одна перестановка, т.к. всего сравнений weight_array-1 за один проход. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.02.2014, 16:52 |
|
||
|
K&R 5.8 Массивы указателей
|
|||
|---|---|---|---|
|
#18+
SashaMercuryMasterZiv,Dima_T спасибо C: а операция *(a+i) будет одинаково по скорости с a[i] вычисляться ? Конечно, это же одно и то же. SashaMercury мне почему-то нравится писать *(a+i), я как-будто бы руками щупаю память, а не в перчатках. Хотя вы правы, читабельней ваш вариант. Щупать надо ... в общем, другое щупать надо. И без перчаток. А "нотация массива" просто удобнее и понятнее. Ну я не знаю. как-то даже сложно представить, когда понятнее будет *(a+i). Наверное, елси отдельно сначала идёт a+i, а затем потом -- разименование в 10 местах, или просто в другом месте. SashaMercuryА вот сейчас функция принимает только один указатель? Но она понимает что указатель на начало массива ? Это я не понял, про какую фукнцию речь ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.02.2014, 20:23 |
|
||
|
K&R 5.8 Массивы указателей
|
|||
|---|---|---|---|
|
#18+
Спасибо за мнения :) Решил что так как знаю С/С++ слабо, буду писать две версии каждой функции что использует указатели, одна будет адресовать элементы через явный сдвиг *(a+i), а вторая будет обращаться a[i]. Через два-три месяца, если будет качественный сдвиг в моём понимание языка, я приму решение относительно своего синтаксиса. SashaMercuryА вот сейчас функция принимает только один указатель? Но она понимает что указатель на начало массива ? MasterZivЭто я не понял, про какую фукнцию речь ? Это я про объявление функции сортировки, где принимаемые параметры (char* a[],int size). Но это наверное дальше есть в K&R буду читать. Dima_T, что значит буква l в lSwap, то что она bool ? И sz после pp ? Что такое pp я понял ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.02.2014, 07:05 |
|
||
|
K&R 5.8 Массивы указателей
|
|||
|---|---|---|---|
|
#18+
Dima_T Код: plaintext 1. сдвиг произойдёт на 12*4-4 ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.02.2014, 07:14 |
|
||
|
K&R 5.8 Массивы указателей
|
|||
|---|---|---|---|
|
#18+
Думал сегодня. Ещё было бы хорошо если бы массивы можно было бы объявлять как f e: Код: plaintext 1. 2. 3. 4. 5. Чтобы всю информацию по типу данных указывать слева. А справа чтобы было только имя элемента ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.02.2014, 07:24 |
|
||
|
K&R 5.8 Массивы указателей
|
|||
|---|---|---|---|
|
#18+
SashaMercuryДумал сегодня. Ещё было бы хорошо если бы массивы можно было бы объявлять как f e Да вы еретик, батенька. Джава по вам плачет :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.02.2014, 11:24 |
|
||
|
K&R 5.8 Массивы указателей
|
|||
|---|---|---|---|
|
#18+
SashaMercuryDima_T, что значит буква l в lSwap, то что она bool ? И sz после pp ? Что такое pp я понял Венгерская нотация, префикс означает тип переменной. l от logical (не b потому что b использую для unsicned char т.е. byte) sz от string zero, строка символов с нулем в конце. Хотя это формально массив char, но это не совсем массив, т.к. в отличии от классических массивов тут ожидается что последний элемент 0. p от pointer (указатель) pp соответственно указатель на указатель ppszArrayEnd указатель на указатель на строку символов с нулем в конце. SashaMercuryDima_T Код: plaintext 1. сдвиг произойдёт на 12*4-4 попугаев ? :) не забывай указывать единицы измерения. Сдвиг произойдет на (iArraySize - 1) элементов массива, т.е. 11. Тут 4 это сколько надо байт памяти для хранения одного элемента массива, т.к. это указатель (char *) то под него надо 4 байта. В итоге сколько выделять байт под каждый тип данных решает компилятор, а ты можешь узнать с помощью sizeof() Код: plaintext 1. Пока советую тебе не заморачиваться что сколько байт занимает в памяти. Тут тебе главное знать что в массиве все элементы идут один за другим без разрывов поэтому работать с ними можно как с указанием индекса элемента a[i];a[i+1]; так и указателями pa=a[i];pa++; SashaMercuryА вот сейчас функция принимает только один указатель? Но она понимает что указатель на начало массива ? ... Это я про объявление функции сортировки, где принимаемые параметры (char* a[],int size). Она ожидает что это начало массива, а начало это или нет решается там где функция вызывается. Задача функции отсортировать size элементов начиная с char* a[] Например можешь отсортировать только летние месяцы Код: plaintext 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.02.2014, 12:03 |
|
||
|
K&R 5.8 Массивы указателей
|
|||
|---|---|---|---|
|
#18+
SashaMercuryДумал сегодня. Ещё было бы хорошо если бы массивы можно было бы объявлять как f e: Код: plaintext 1. 2. 3. 4. 5. Чтобы всю информацию по типу данных указывать слева. А справа чтобы было только имя элемента согласен про еритика.. С - язык, удобный для человека, а не для компилятора. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.02.2014, 07:35 |
|
||
|
K&R 5.8 Массивы указателей
|
|||
|---|---|---|---|
|
#18+
Венгерская нотация, префикс означает тип переменной. .... Венгерская нотация - это еще одна тупиковая ветвь развития человечества. её применять не надо. знать тем не менее надо немного, поскольку эта хрень применяется в WinAPI. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.02.2014, 07:40 |
|
||
|
K&R 5.8 Массивы указателей
|
|||
|---|---|---|---|
|
#18+
MasterZivВенгерская нотация - это еще одна тупиковая ветвь развития человечества. Может для C/C++ особой необходимости в ней нет, в силу специфики языка: 1. Жесткая типизация. Код просто не откомпилируется при попытке присвоить значение другого типа 2. Постоянное указывание типов в коде при передаче параметров. Они всегда на виду. В крайнем случае среда разработки быстро подскажет тип переменной (как минимум MS VC) 3. Огромное разнообразие типов, начиная с базовых, заканчивая своими - устанешь префиксы изобретать :) Но на C/C++ программирование не заканчивается, есть много других языков где она полезна. В первую очередь при отсутствии жесткой типизации переменных. Например в Visual FoxPro (на котором я в основном пишу) вообще нет типов переменных, есть только типы данных. В итоге тип переменной определяется типом записанных в нее данных. И ошибка проявится не при компиляции, а при работе программы. По сути переменная фокспро это всегда void* в терминологии Си. То же самое касается полей таблиц в СУБД. Сделал выборку и гадай потом где какой тип, когда можно сделать префикс и по имени поля сразу знать его тип. Также в фоксе использую указание области видимости переменной (global/private/local) Например в Си такой код выведет 15 звездочек Код: plaintext 1. 2. 3. 4. 5. 6. а в фоксе подобное зациклится Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. Зациклится потому что будет использована одна и та же i. Чтобы такого не случилось надо самому позаботится и явно объявить переменную локальной. В общем в фоксе без венгерской нотации грустно писать. Лично для меня разработка сильно упростилась когда начал ее использовать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.02.2014, 09:19 |
|
||
|
K&R 5.8 Массивы указателей
|
|||
|---|---|---|---|
|
#18+
Dima TНо на C/C++ программирование не заканчивается Как это не заканчивается? В этом форуме точно заканчивается ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.02.2014, 11:39 |
|
||
|
K&R 5.8 Массивы указателей
|
|||
|---|---|---|---|
|
#18+
Шпольский пояснял, зачем нужна венгерская нотация . И это совсем не обозначение типов переменных. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.02.2014, 16:14 |
|
||
|
K&R 5.8 Массивы указателей
|
|||
|---|---|---|---|
|
#18+
Dima T, Я честно говоря никогда нигде не видел венгерскую нотацию вне С/С++, в других языках программирования. На фоксе писал много сам, но никогда не применял ни венгерскую нотацию, ни какие-то соглашения о кодировании вообще, и как-то обходились все. Может быть потому, что у меня было всё на SQL и по большому счёту там и переменных-то не было ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.02.2014, 23:08 |
|
||
|
K&R 5.8 Массивы указателей
|
|||
|---|---|---|---|
|
#18+
MasterZivDima T, Я честно говоря никогда нигде не видел венгерскую нотацию вне С/С++, в других языках программирования. На фоксе писал много сам, но никогда не применял ни венгерскую нотацию, ни какие-то соглашения о кодировании вообще, и как-то обходились все. Может быть потому, что у меня было всё на SQL и по большому счёту там и переменных-то не было ?Венгерская нотация (настоящая венгерская нотация) может быть полезна если у тебя много "одноименных переменных" относящихся к разным областям. Не помню дословно как было в оригинальной статье введшей эту нотацию в обиход, но она писалась по следам создания текстового редактора. А там есть разные виды строк, отсюда и нотация: wRow, dRow, bRow- строка в окне, строка в документе, строка в буфере. И в этом случае легко можно заметить что если кто-то написал wRow=bRow то это ошибка. А если твой язык позволяет делать длинные имена и ты не ленишься писать RowInTheWindow, row_in_the_document или Row_Of_The_Buffer, то венгерская нотация уже не нужна. Те кто придумал давать переменным префикс на основе их типа - придурки и должны быть расстреляны. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.02.2014, 07:03 |
|
||
|
K&R 5.8 Массивы указателей
|
|||
|---|---|---|---|
|
#18+
White Owl, winRow, docRow, bufRow было бы значительно лучше. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.02.2014, 10:41 |
|
||
|
K&R 5.8 Массивы указателей
|
|||
|---|---|---|---|
|
#18+
White OwlТе кто придумал давать переменным префикс на основе их типа - придурки и должны быть расстреляны. На вкус и цвет все фломастеры разные (с) Слава богу имена переменных никакие стандарты не регламентируют. И тут личное дело каждого разработчика как именовать переменные. Лично мне удобнее с венгерской нотацией в т.ч. и в С/С++. И очень удивляет когда идут гневные потоки сознания по таким философским вопросам. Делиться опытом и пытаться его навязывать - это разные вещи. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.02.2014, 11:05 |
|
||
|
K&R 5.8 Массивы указателей
|
|||
|---|---|---|---|
|
#18+
Dima TWhite OwlТе кто придумал давать переменным префикс на основе их типа - придурки и должны быть расстреляны. На вкус и цвет все фломастеры разные (с) Слава богу имена переменных никакие стандарты не регламентируют. И тут личное дело каждого разработчика как именовать переменные. Лично мне удобнее с венгерской нотацией в т.ч. и в С/С++. И очень удивляет когда идут гневные потоки сознания по таким философским вопросам. Делиться опытом и пытаться его навязывать - это разные вещи. Ну я тоже против венгерки. Просто чисто эстетически. Какое-то время пользовался ею, но потом подумал -- а нафига мне кривить мозг, или набирать лишние символы, и перестал пользоваться ею совсем. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.02.2014, 12:01 |
|
||
|
K&R 5.8 Массивы указателей
|
|||
|---|---|---|---|
|
#18+
Здравствуйте всем :) Мне кажется что в теории языков программирование наверняка есть обоснование существования венгерской нотации. От себя: f e: 1. Думается что имя любого указателя должно начинаться с "p" 2. Допустим у вас есть таблица monthes с атрибутами name, number, вы получаете в коде значения и номера месяца и имени месяца. Мне кажется лучше назвать их f e s_month i_month вместо name_month number_month 3. мне кажется что венгерская нотация по качеству не аналог go to ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.02.2014, 13:10 |
|
||
|
K&R 5.8 Массивы указателей
|
|||
|---|---|---|---|
|
#18+
SashaMercury, именовать параметры это искусство. вот, например, твой пример с таблицей. скажи, зачем мне иметь префиксы к полям: birthdate, total, name, surname, id, deleted и так далее? префиксы формируют "арабскую" вязь и превращают код в тайнопись. Или, к примеру, решит ты сменить в таблице домен (вместе с типом), что, поле будешь переименовывать? вообщем, имя должно либо говорить о себе, либо не вызывать разночтений в силу устоявшейся традиции. например, переменные цикла или знаменитые foo..boo. поэтому, в базах данных эта техника с префиксами не прижилась. что касается кода, то здесь как тебе нравится, но мое замечание относительно имени, которое говорит само за себя тоже здесь действует. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.02.2014, 13:23 |
|
||
|
K&R 5.8 Массивы указателей
|
|||
|---|---|---|---|
|
#18+
неееет. я имел ввиду не именование полей с префиксами в бд! в бд name, namber. Например вы в коде присваиваете значение переменной из запроса к бд !я про код ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.02.2014, 13:27 |
|
||
|
K&R 5.8 Массивы указателей
|
|||
|---|---|---|---|
|
#18+
number* ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.02.2014, 13:28 |
|
||
|
K&R 5.8 Массивы указателей
|
|||
|---|---|---|---|
|
#18+
Анатолий Широковпрефиксы формируют "арабскую" вязь и превращают код в тайнопись. Если до маразма не доводить - одна буква перед названием не усложнит читаемость кода. Анатолий ШироковИли, к примеру, решит ты сменить в таблице домен (вместе с типом), что, поле будешь переименовывать? Это серьезный косяк проектирования БД. Если уж ты меняешь тип поля, то замена названия мелочь по сравнению с перелопачиванием кода в поисках где это поле используется. Оффтоп об особенностях разработки на фоксеЕсть два типа DATE и DATETIME, в большинстве случаев без разницы который используется, язык сам занимается неявным приведением типов, т.е. если перепутал - ошибок не будет, но при расчетах получается интересный эффект DATE - DATE = количество дней DATETIME - DATETIME = количество секунд Например такой код Код: plaintext 1. 2. 3. попробуй угадай чего мы получим в delta? можно предположить что дату рождения не зачем хранить с точностью до секунд, т.е. она имеет тип DATE, но база может распологаться на MSSQL у которого тип DATE появился всего лет пять назад и было без вариантов DATETIME да и зачем этот мозговой штурм каждый раз проводить, если можно просто назвать поле dBirthday или tBirthday ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.02.2014, 14:35 |
|
||
|
K&R 5.8 Массивы указателей
|
|||
|---|---|---|---|
|
#18+
Dima T, плохо говорить с верующими :-) я не буду писать Код: plaintext 1. я напишу Код: plaintext 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.02.2014, 15:20 |
|
||
|
|

start [/forum/topic.php?fid=57&msg=38560605&tid=2019681]: |
0ms |
get settings: |
8ms |
get forum list: |
13ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
162ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
60ms |
get tp. blocked users: |
1ms |
| others: | 14ms |
| total: | 275ms |

| 0 / 0 |
