14 / 1 / 0
Регистрация: 16.07.2016
Сообщений: 19
|
|
1 | |
Зачем нужны указатели16.07.2016, 19:57. Показов 15812. Ответов 20
Метки нет (Все метки)
Не могу понять синтаксис указателей. Понял, что это работа с адресами, что оператор & это адрес. А вот * как я понял, это объявление указателя. Но. Что в него записывать? Адрес? Значение переменной? Хоть убей-не понимаю. Объясните пожалуйста.
Зачем их использовать? Можно же напрямую обратиться к чему-либо.
1
|
16.07.2016, 19:57 | |
Ответы с готовыми решениями:
20
Зачем нужны все эти указатели (или не указатели) Указатели на слонов или А зачем нужны указатели? Зачем нужны указатели? Зачем нужны многоуровневые указатели |
Модератор
13507 / 10757 / 6412
Регистрация: 18.12.2011
Сообщений: 28,714
|
|||||||||||
16.07.2016, 20:03 | 2 | ||||||||||
0
|
17.07.2016, 09:46 | 3 |
1. Тогда придумай работу со списками без указателей.
2. Указатель занимает 2-8 байтов, а объект может занимать несколько килобайт (и содержать указатели на другие объекты). 3. Объект может быть один, а указателей на него - много.
0
|
8739 / 4317 / 960
Регистрация: 15.11.2014
Сообщений: 9,760
|
|
18.07.2016, 10:59 | 4 |
киллер-фича указателей в том,
что вы можете обращаться к объекту, не зная его имени. в указателе хранится адрес объекта, и зная этот адрес можно получить доступ к самому объекту. для чего это может быть нужно? например, что бы была возможность работать не с каким то конкретным объектом, а с любым, адрес которого нам дали. в указатель мы можем подсовывать адреса самых разных объектов. и одна и таже функция сможет обработать эти объекты,
0
|
11 / 11 / 9
Регистрация: 01.07.2015
Сообщений: 85
|
|
18.07.2016, 11:00 | 5 |
http://cppstudio.com/post/423/ читайте, потом нам расскажете
0
|
5 / 5 / 2
Регистрация: 04.10.2013
Сообщений: 142
|
||||||||||||||||
18.07.2016, 18:39 | 6 | |||||||||||||||
Сообщение было отмечено Михаилыч как решение
Решение
Рассмотрим упрощенную схему организации оперативной памяти машины. Память типичной машины представляет собой массив последовательно пронумерованных и проадресованных ячеек, с которыми можно работать по отдельности или связанными кусками. Применительно к любой 16-разрядной и 32-разрядной машине верны следующие утверждения:
- один байт может хранить значение типа char; - двухбайтовая ячейка может рассматриваться как целое типа short; - четырехбайтовая - как целое типа long. Указатель - это группа ячеек, в которых может храниться адрес. Например, пусть переменная ch имеет тип char, ptrch - указатель, ссылающийся на переменную ch. В Си имеется унарная операция & - операция получения адреса. Запись вида
Правила: 1. Операция получения адреса & применяется только к объектам, расположенным в памяти, а именно к переменным и элементам массивов. 2. Ее операндом не может быть ни выражение, ни константа, ни регистровая переменная. Унарная операция * есть операция раскрытия ссылки. (Другие названия: операция разадресации, операция косвенной адресации). Эта операция применяется к указателю и выдает объект, на который данный указатель ссылается. Приведем следующие записи:
Приведем примеры правильного описания указателей:
Замечание: При выводе на экран или печать значения указателя с помощью функции printf() необходимо пользоваться спецификацией преобразования %u, поскольку значением указателя является адрес - целое число без знака.
1
|
Неэпический
|
||||||
18.07.2016, 19:49 | 7 | |||||
На самом деле, указатель вообще не знает на что он "ссылается".
Тип указателя влияет на то, как будет интерпретирована память. Например,
Всё использование p будет построено так, как будто в памяти лежит char, но это же не так
1
|
hoggy
|
18.07.2016, 19:50
#8
|
0
|
Croessmah
|
18.07.2016, 19:51
#9
|
0
|
hoggy
|
18.07.2016, 20:00
#10
|
0
|
70 / 47 / 5
Регистрация: 10.01.2017
Сообщений: 1,849
|
|
14.09.2019, 23:59 | 11 |
[QUOTE=ZSS;9375747Указатели можно использовать для изменения значений передаваемых в параметрах функции[/QUOTE]
А есть еще полезное применение у указателей ? Потому что кроме, как передачи параметров в функцию через ссылку или через указатель с последующим разыиминованием, вообще не понятно для чего же они нужны ?
0
|
Модератор
13507 / 10757 / 6412
Регистрация: 18.12.2011
Сообщений: 28,714
|
|||||||||||
15.09.2019, 09:01 | 12 | ||||||||||
Ну, например, обычный указатель:
"Ленин и партия".
0
|
Azazel-San
|
15.09.2019, 12:40
#14
|
Не по теме: Croessmah, все ещё жду статью по указателях от тебя))0
0
|
490 / 286 / 129
Регистрация: 30.10.2018
Сообщений: 1,309
|
|
15.09.2019, 12:48 | 15 |
Представь ситуацию. Учишся ты в школе, но учебни к по истории забыл дома, сосед по парте конечно же с тобой поделиться. Выходит что вы читаете из одной книги, но вдруг сосед по парте пошел к доске, у тебя есть время рисовать в книге что угодно, как только друг прийдет, он увидит это все, и выходит что ты рисовал ему по книге - вот это и есть указатели, вы двое видите одну книгу.
А теперь представь, что он тебе дал копию учебника, сколько не рисуй, книга твоего соседа останеться прежней - вот это уже работа с копией. Может сложный пример, но куда проще будет с великом. Имея один велик на двоих, можно пользоваться по очереди. Имея два велика, можно один ломать - второй останеться цел.
0
|
70 / 47 / 5
Регистрация: 10.01.2017
Сообщений: 1,849
|
|
15.09.2019, 13:48 | 16 |
А есть еще полезное применение у указателей ? Потому что кроме, как передачи параметров в функцию через ссылку или через указатель с последующим разыиминованием, вообще не понятно для чего же они нужны ?
0
|
490 / 286 / 129
Регистрация: 30.10.2018
Сообщений: 1,309
|
|
15.09.2019, 14:10 | 18 |
Блин, хорошо. А как ты будешь хранить данные в памяти? Ведь указатель указывает на ячейку в памяти, память которой не контролюеться стеком, т.к. это куча.
Представь ситуацию, у тебя одновременни 1000 процессов берут данные из памяти. Без указателей, они брали бы копии и все время создавали бы новые объекты, а с указателями они буду ссылаться на один объект.
0
|
70 / 47 / 5
Регистрация: 10.01.2017
Сообщений: 1,849
|
|
15.09.2019, 14:15 | 20 |
Ссылатся то будут, но доступ одновременно иметь, как я понимаю не будут, для этого есть std atomic (для потоков) ?
0
|
15.09.2019, 14:15 | |
15.09.2019, 14:15 | |
Помогаю со студенческими работами здесь
20
Зачем здесь нужны указатели Не могу понять зачем нужны указатели? Тема указатели, зачем они нужны Объясните, пожалуйста, зачем в C++ нужны указатели Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |