Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
K&R 5.8 Массивы указателей
|
|||
|---|---|---|---|
|
#18+
Здравствуйте. Решил начать новую тему. Предыдущая содержит много ошибок не по теме. Вот собственно мой код. Код: 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. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.02.2014, 07:41 |
|
||
|
K&R 5.8 Массивы указателей
|
|||
|---|---|---|---|
|
#18+
1.1-1.2 -это побочный эффект, верно ? как бы мне внутри while объявлять i чтобы он не изменял внешнюю переменную. Или как бы сделать так, чтобы при использовании переменной внутри while, на выходе её значение становилось прежним по умолчанию. может f e существует идентификатор при объявлении smth_ident int i=0; 2. Как бы правильно назвать размерность массива, подходит ли моё название ? не совсем в тему, но кстати, используете ли вы венгерскую нотацию ? 2. Хочу передавать только адрес первого элемента массива и кол-во элементов, но пока не получилось написать функцию. Возможно ли это ? если да, то не подсказывайте как, хочу ещё сам подумать. 3. Алгоритм сортировки верный ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.02.2014, 07:56 |
|
||
|
K&R 5.8 Массивы указателей
|
|||
|---|---|---|---|
|
#18+
И вот ещё ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.02.2014, 07:57 |
|
||
|
K&R 5.8 Массивы указателей
|
|||
|---|---|---|---|
|
#18+
Какая максимальная размерность массива указателей ? Мне нравятся, мощная штука. А ещё можно сделать массив указателей который замыкается на себе ? вроде можно, но для чего это будет использоваться ? (не одномерный, одномерный видимо для стэка fifo,lifo и тп ) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.02.2014, 07:59 |
|
||
|
K&R 5.8 Массивы указателей
|
|||
|---|---|---|---|
|
#18+
SashaMercury1.1-1.2 -это побочный эффект, верно ? как бы мне внутри while объявлять i чтобы он не изменял внешнюю переменную. Или как бы сделать так, чтобы при использовании переменной внутри while, на выходе её значение становилось прежним по умолчанию. может f e существует идентификатор при объявлении smth_ident int i=0; используй цикл for() Код: plaintext 1. 2. SashaMercury2. Как бы правильно назвать размерность массива, подходит ли моё название ? не совсем в тему, но кстати, используете ли вы венгерскую нотацию ? Массив указателей Венгерская нотация никому хуже код не сделала. Лучше использовать. SashaMercury2. Хочу передавать только адрес первого элемента массива и кол-во элементов, но пока не получилось написать функцию. Возможно ли это ? если да, то не подсказывайте как, хочу ещё сам подумать. Да SashaMercury3. Алгоритм сортировки верный ? Сам как думаешь? На скриншот свой посмотри. SashaMercuryИ вот ещё Не надо лезть за пределы массива, там неинициализированная память, там вообще может не оказаться реальной памяти. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.02.2014, 08:24 |
|
||
|
K&R 5.8 Массивы указателей
|
|||
|---|---|---|---|
|
#18+
декабрь совсем не там ! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.02.2014, 08:26 |
|
||
|
K&R 5.8 Массивы указателей
|
|||
|---|---|---|---|
|
#18+
нужно Код: plaintext 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.02.2014, 08:31 |
|
||
|
K&R 5.8 Массивы указателей
|
|||
|---|---|---|---|
|
#18+
Dima_TНе надо лезть за пределы массива, там неинициализированная память, там вообще может не оказаться реальной памяти. Он мне всегда следующим элементов выводит CCCC CCCC что это ? а что он тогда выводит если там не реальной памяти ? откуда берёт значения? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.02.2014, 08:38 |
|
||
|
K&R 5.8 Массивы указателей
|
|||
|---|---|---|---|
|
#18+
Какая максимальная размерность массива указателей ? любая. пока памяти хватит. Мне нравятся, мощная штука. А ещё можно сделать массив указателей который замыкается на себе ? вроде можно, но для чего это будет использоваться ? (не одномерный, одномерный видимо для стэка fifo,lifo и тп ) как же тебя плющит... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.02.2014, 08:39 |
|
||
|
K&R 5.8 Массивы указателей
|
|||
|---|---|---|---|
|
#18+
SashaMercuryDima_TНе надо лезть за пределы массива, там неинициализированная память, там вообще может не оказаться реальной памяти. Он мне всегда следующим элементов выводит CCCC CCCC что это ? а что он тогда выводит если там не реальной памяти ? откуда берёт значения? Там есть реальная память (иначе бы прога вылетела), а что там записано и какой программой неважно. Ты просил массив из 12 элементов - тебе его выделили, не надо лезть в 13-й. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.02.2014, 08:51 |
|
||
|
K&R 5.8 Массивы указателей
|
|||
|---|---|---|---|
|
#18+
SashaMercury, напиши подробные комментарии к каждой строчке кода. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.02.2014, 08:51 |
|
||
|
K&R 5.8 Массивы указателей
|
|||
|---|---|---|---|
|
#18+
Скорее всего CCCC CCCC ставит компилятор. Зачем точно не скажу, могу предположить скорее всего своеобразная защита от ошибок в коде, чтобы программа гарантированно вылетела при попытке обратится по этому адресу. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.02.2014, 08:57 |
|
||
|
K&R 5.8 Массивы указателей
|
|||
|---|---|---|---|
|
#18+
Код: 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. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.02.2014, 09:06 |
|
||
|
K&R 5.8 Массивы указателей
|
|||
|---|---|---|---|
|
#18+
Эта строчка правильно написана? SashaMercury Код: plaintext 1. 2. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.02.2014, 09:27 |
|
||
|
K&R 5.8 Массивы указателей
|
|||
|---|---|---|---|
|
#18+
нелогично что 11, согласен. Но правильно вроде-бы ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.02.2014, 09:36 |
|
||
|
K&R 5.8 Массивы указателей
|
|||
|---|---|---|---|
|
#18+
SashaMercuryнелогично что 11, согласен. Но правильно вроде-бы почему правильно? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.02.2014, 09:38 |
|
||
|
K&R 5.8 Массивы указателей
|
|||
|---|---|---|---|
|
#18+
Неправильно. Должно быть 12 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.02.2014, 09:50 |
|
||
|
K&R 5.8 Массивы указателей
|
|||
|---|---|---|---|
|
#18+
SashaMercuryНеправильно. Должно быть 12 почему? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.02.2014, 09:52 |
|
||
|
K&R 5.8 Массивы указателей
|
|||
|---|---|---|---|
|
#18+
Код: plaintext 1. отработает до 11 элемента, а в теле индексация на единицу увеличит, то учту все элементы массива ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.02.2014, 10:08 |
|
||
|
K&R 5.8 Массивы указателей
|
|||
|---|---|---|---|
|
#18+
SashaMercury Код: plaintext 1. отработает до 11 элемента, а в теле индексация на единицу увеличит, то учту все элементы массива почти угадал :) Надо четко понимать чего ты пишешь. Ты при описании кода ни слова не написал про строку Код: plaintext 1. а она одна из не многих требующих обязательного описания при описании функции обязательно надо описать что она получает в параметрах В твоем случае char* a_start[] - начало сортируемого массива int weight_array - размер массива У тебя размер изначально 12 (char* m[12]) вот и надо передавать 12. И имена переменным надо давать соответствующие: weight переводится как "вес", по-русски ты же нигде не пишешь "вес массива", уместнее слово size - размер. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.02.2014, 10:20 |
|
||
|
K&R 5.8 Массивы указателей
|
|||
|---|---|---|---|
|
#18+
Можно конечно написать в описании weight_array - это индекс последнего элемента массива. тогда вызов sort_cur(m, 11) будет правильным, только так обычно никто не пишет, принято передавать указатель на начало и размер. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.02.2014, 10:25 |
|
||
|
K&R 5.8 Массивы указателей
|
|||
|---|---|---|---|
|
#18+
SashaMercury Код: plaintext 1. отработает до 11 элемента, а в теле индексация на единицу увеличит, то учту все элементы массива Так не пишут. Не ошибка, конечно, но начинают с нуля и бегут до N-1. В цикле for . Код: plaintext 1. 2. 3. 4. 5. 6. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.02.2014, 12:48 |
|
||
|
K&R 5.8 Массивы указателей
|
|||
|---|---|---|---|
|
#18+
SashaMercury Код: plaintext 1. 2. 3. 4. 5. 6. Вот это пиши лучше не через указатели, а через смещение в массиве. Как будто указатель -- это массив. Проче, понятнее, короче. Код: plaintext 1. 2. 3. 4. 5. 6. Также давай переменным осмысленные имена. Объявляй переменные в месте их первого использования, если обратное не требуется по семантике программы (если не нужно вынести переменную из блока). Это НЕ classic C style, но очень хорошая позитивная привычка нормального C++-ника. Ты же не собираешься наверное на голом С останавливаться ? Думаю, нет. Используй правильно циклы. Если у тебя есть явная инициализация цикла, условие завершения и выражение смещения к следующей итерации, выполняемое безусловно, то нужно использовать FOR (если есть хотя бы два из этих трёх условий). Для циклов с постусловием используй do ... while, в остальных случаях -- while. Вместь Код: plaintext 1. можно писать просто Код: plaintext 1. , вместо Код: plaintext 1. можно писать Код: plaintext 1. . Это тебе не Java. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.02.2014, 13:00 |
|
||
|
K&R 5.8 Массивы указателей
|
|||
|---|---|---|---|
|
#18+
Код: plaintext 1. На сколько я помню, в пузырьке достаточным условием выхода из сортировки является просто то, что за проход не пришлось ничего переставлять. Можешь справиться в википедии. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.02.2014, 13:03 |
|
||
|
K&R 5.8 Массивы указателей
|
|||
|---|---|---|---|
|
#18+
MasterZiv,Dima_T спасибо C: а операция *(a+i) будет одинаково по скорости с a[i] вычисляться ? мне почему-то нравится писать *(a+i), я как-будто бы руками щупаю память, а не в перчатках. Хотя вы правы, читабельней ваш вариант. Завтра ещё раз утром всё перечитаю А вот сейчас функция принимает только один указатель? Но она понимает что указатель на начало массива ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.02.2014, 15:47 |
|
||
|
|

start [/forum/topic.php?fid=57&fpage=65&tid=2019681]: |
0ms |
get settings: |
6ms |
get forum list: |
12ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
45ms |
get topic data: |
11ms |
get forum data: |
2ms |
get page messages: |
113ms |
get tp. blocked users: |
5ms |
| others: | 12ms |
| total: | 214ms |

| 0 / 0 |
