|
указатель на массив. что это такое ?
|
|||
---|---|---|---|
#18+
Не совсем понятна эта рыба. Вот объявляем 2 переменных : Код: plaintext 1. 2.
а затем делаем вот так и прокатывает : b = *a; Верно ли я понимаю что грубо говоря в *a содержится адрес на первый элемент массива ? то есть если есть интовая переменная : Код: plaintext 1.
то дальше можно вот так делать : Код: plaintext 1. 2. 3.
Кто - нить использует такие вещи , а то стараюсь понять классику Кернигана, но тут же подумал кто эту жесть сейчас пользует ??? ... |
|||
:
Нравится:
Не нравится:
|
|||
14.06.2020, 16:27 |
|
указатель на массив. что это такое ?
|
|||
---|---|---|---|
#18+
andron81, Массив -- это тип. Указатель на массив ничем не отличается от указателя на структуру или на int. Вам нужно просто абстрактность своего мышления поднять на ступеньку вверх и всё встанет на свои места. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.06.2020, 16:52 |
|
указатель на массив. что это такое ?
|
|||
---|---|---|---|
#18+
есть две разные вещи 1) Pointer to an array int (*a)[5]; typical use case: 2d array 2) Array of pointers int *a[5] typical use case: array of strings ... |
|||
:
Нравится:
Не нравится:
|
|||
14.06.2020, 17:04 |
|
указатель на массив. что это такое ?
|
|||
---|---|---|---|
#18+
petravМассив -- это тип. Не надо подымать предыдущую тему, её уже всю перетёрли до дыр. В языке Си массив неявно приводится к указателю на первый элемент. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
14.06.2020, 17:04 |
|
указатель на массив. что это такое ?
|
|||
---|---|---|---|
#18+
andron81Не совсем понятна эта рыба. Тебе уже говорили читать объявления справа налево. Пока ты это не освоишь, дальше можешь даже не пытаться двигаться. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
14.06.2020, 17:07 |
|
указатель на массив. что это такое ?
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakov petravМассив -- это тип. Не надо подымать предыдущую тему, её уже всю перетёрли до дыр. Я не поднимаю эту тему. Я ответил по сути и ответил правильно. Или эта тема — уже табу? Dimitry Sibiryakov В языке Си массив неявно приводится к указателю на первый элемент. Да. А char неявно приводится к int. Но это тут не при чём. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.06.2020, 17:16 |
|
указатель на массив. что это такое ?
|
|||
---|---|---|---|
#18+
petravЯ ответил по сути и ответил правильно. Или эта тема — уже табу? Эта тема - флеймогенератор. Но если настаиваешь - пожалуйста, можешь дальше пытаться объяснять почему "typedef int[5] arr5; arr5 x;" не работает, раз уж массив это тип. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
14.06.2020, 17:27 |
|
указатель на массив. что это такое ?
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakov Тебе уже говорили читать объявления справа налево. справа налево, неужели ? как раз пример : Код: plaintext 1.
это указатель на массив из 5 элементов. то есть ни фига тут не справа налево, потому что скобки стоят круглые. а стоят они потому что квадратные имеют больший приоритет над "*". а без них (круглых ) это был бы массив из указателей: int * a[5] . вот скажем правило на хабре : То, что будет в середине, обычно сложнее разобрать, но можно сформулировать правило: двигайтесь вправо, если это возможно, и перемещайтесь влево если это необходимо Начиная с имени переменной, соблюдая правила приоритета, двигайтесь вправо насколько это возможно вычеркивая лексемы, пока не дойдете до группирующих скобок.После же перемещайтесь налево в соответствии со скобками. и можно мне не объяснять(mini.weblab), что есть массив из указателей и указатель на массив из 5 элементов. суть вопроса совсем не в этом была ... |
|||
:
Нравится:
Не нравится:
|
|||
14.06.2020, 17:31 |
|
указатель на массив. что это такое ?
|
|||
---|---|---|---|
#18+
andron81, А в чём была суть вопроса? ... |
|||
:
Нравится:
Не нравится:
|
|||
14.06.2020, 17:34 |
|
указатель на массив. что это такое ?
|
|||
---|---|---|---|
#18+
petrav, Верно ли я понимаю что грубо говоря в *a содержится адрес на первый элемент массива ? ... |
|||
:
Нравится:
Не нравится:
|
|||
14.06.2020, 17:35 |
|
указатель на массив. что это такое ?
|
|||
---|---|---|---|
#18+
andron81то есть ни фига тут не справа налево, потому что скобки стоят круглые. а стоят они потому что квадратные имеют больший приоритет над "*". И, внезапно, квадратные скобки стоят правее звёздочки. Совпадение? Не думаю. Почему бы не написать так: "int[5] *a;"?.. (Вопрос риторический.) Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
14.06.2020, 17:35 |
|
указатель на массив. что это такое ?
|
|||
---|---|---|---|
#18+
andron81Верно ли я понимаю что грубо говоря в *a содержится адрес на первый элемент массива ? Нет. Этот адрес содержится непосредственно в a. В *а - сам массив, который (случайно) в присвоении ниже приводится обратно к указателю. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
14.06.2020, 17:37 |
|
указатель на массив. что это такое ?
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakov Почему бы не написать так: "int[5] *a;"?.. (Вопрос риторический.) Но ведь это же не компилируется. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.06.2020, 17:53 |
|
указатель на массив. что это такое ?
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakov Почему бы не написать так: "int[5] *a;"?.. (Вопрос риторический.) такая семантика была бы более логичной скажем аналогично тому же паскалю. но в Си так нельзя. наверно на это есть причины. почему в Си по другому. хотелось бы про них почитать ... |
|||
:
Нравится:
Не нравится:
|
|||
14.06.2020, 17:57 |
|
указатель на массив. что это такое ?
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakov Нет. Этот адрес содержится непосредственно в a. ну да, согласен. тут переварил. тут ответ получен. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.06.2020, 18:03 |
|
указатель на массив. что это такое ?
|
|||
---|---|---|---|
#18+
andron81 petrav, Верно ли я понимаю что грубо говоря в *a содержится адрес на первый элемент массива ? В "a" содержится указатель на массив. По факту, в нём содержится указатель на первый элемент массива. Но по сути в нём содержится указатель на массив. Если бы "a" был бы указателем на структуру из int-ов, то по факту "a" содержал бы указатель на первый int в этой структуре. А "*a" — это разименование указателя. Что ж тут непонятного. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.06.2020, 18:06 |
|
указатель на массив. что это такое ?
|
|||
---|---|---|---|
#18+
petrav andron81 petrav, Верно ли я понимаю что грубо говоря в *a содержится адрес на первый элемент массива ? В "a" содержится указатель на массив. По факту, в нём содержится указатель на первый элемент массива. Но по сути в нём содержится указатель на массив. Если бы "a" был бы указателем на структуру из int-ов, то по факту "a" содержал бы указатель на первый int в этой структуре. А "*a" — это разименование указателя. Что ж тут непонятного. зелен тут пока ещё вот и путаюсь. а вот это удивительно (хоть до структур не дошёл , но что это я знаю): petrav Если бы "a" был бы указателем на структуру из int-ов, то по факту "a" содержал бы указатель на первый int в этой структуре. круто. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.06.2020, 18:10 |
|
указатель на массив. что это такое ?
|
|||
---|---|---|---|
#18+
petrav, ладно , последний вопрос, а почему вот так не даёт ? Код: plaintext 1. 2. 3. 4.
... |
|||
:
Нравится:
Не нравится:
|
|||
14.06.2020, 18:13 |
|
указатель на массив. что это такое ?
|
|||
---|---|---|---|
#18+
andron81 petrav, ладно , последний вопрос, а почему вот так не даёт ? Код: plaintext 1. 2. 3. 4.
Тут "a" — это указатель на массив. В первом случае ты ему пытаешься присвоить указатель на первый элемент массива. Ну корректно ли это? Во втором случае "f" — это массив. Эта переменная может неявно привестить к указателю на элемент массива. А ты пытаешься присвоить это указателю на массив. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.06.2020, 18:21 |
|
указатель на массив. что это такое ?
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakov Но если настаиваешь - пожалуйста, можешь дальше пытаться объяснять почему "typedef int[5] arr5; arr5 x;" не работает, раз уж массив это тип. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.06.2020, 18:33 |
|
указатель на массив. что это такое ?
|
|||
---|---|---|---|
#18+
petrav Тут "a" — это указатель на массив. В первом случае ты ему пытаешься присвоить указатель на первый элемент массива. Ну корректно ли это? ну а почему не корректно то ? ты же сам писал: В "a" содержится указатель на массив. По факту, в нём содержится указатель на первый элемент массива. Но по сути в нём содержится указатель на массив. итого имеем : 1) f это массив из 5 интовых элементов. в f(или в &f[0]) содержится адрес первого элемента. 2) переменная a указатель на массив из 5 элементов. и читаем что ты писал(а с этим я согласен) то есть по сути всё соблюдено наверно . а нет... ... |
|||
:
Нравится:
Не нравится:
|
|||
14.06.2020, 18:40 |
|
указатель на массив. что это такое ?
|
|||
---|---|---|---|
#18+
a guestКакая связь между тем, что массив это тип и тем, почему код (не) должен работать? В спецификации typedef написано "первый параметр - тип". Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
14.06.2020, 18:48 |
|
указатель на массив. что это такое ?
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakov a guestКакая связь между тем, что массив это тип и тем, почему код (не) должен работать? В спецификации typedef написано "первый параметр - тип". Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12.
может я что-то не понял, но у меня это работает :) ... |
|||
:
Нравится:
Не нравится:
|
|||
14.06.2020, 18:52 |
|
указатель на массив. что это такое ?
|
|||
---|---|---|---|
#18+
то есть дело то может быть в синтаксисе . да, так нельзя : Код: plaintext 1.
а вот так можно : Код: plaintext 1.
то есть логичнее на мой взгляд вот наподобие как студенческом паскале : Код: plaintext 1.
и тогда массив можно было бы назвать типом. Но почему взят за основу синтаксис : Код: plaintext 1.
загадка я спрашивал у Сибирякова , он наверняка знает. но писать не хочет ... |
|||
:
Нравится:
Не нравится:
|
|||
14.06.2020, 19:08 |
|
|
start [/forum/topic.php?fid=57&msg=39969054&tid=2017398]: |
0ms |
get settings: |
11ms |
get forum list: |
15ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
39ms |
get topic data: |
10ms |
get forum data: |
3ms |
get page messages: |
56ms |
get tp. blocked users: |
1ms |
others: | 263ms |
total: | 406ms |
0 / 0 |