|
2 / 2 / 2
Регистрация: 29.06.2018
Сообщений: 139
|
||||||||||||||||
Не понимаю указатели01.11.2023, 17:47. Показов 4987. Ответов 93
Метки нет (Все метки)
Почитал всякое, понял, что указатели я скорее не понимаю чем понимаю.
Указатель - это объект, который связан с адресом памяти, верно? А если перед указателем поставить значок амперсенда - то такая запись будет означать сам адрес памяти. А вот описание функции fopen() http://cppstudio.com/post/1253/
0
|
||||||||||||||||
| 01.11.2023, 17:47 | |
|
Ответы с готовыми решениями:
93
Указатели. Не понимаю не совсем понимаю код *указатели Правильно ли я понимаю ссылки и указатели. Работу с ними. Я сам прокомментировал код. Скажите правильно или нет. |
|
Злостный нарушитель
10878 / 5817 / 1288
Регистрация: 12.03.2015
Сообщений: 26,855
|
||
| 02.11.2023, 13:23 | ||
![]()
0
|
||
|
фрилансер
6495 / 5724 / 1133
Регистрация: 11.10.2019
Сообщений: 15,286
|
|
| 02.11.2023, 13:25 | |
|
Verevkin, страдают от языка только те, кому этот язык не нужен. Зачёт только сдать и всё, досвидос
0
|
|
|
19501 / 10106 / 2461
Регистрация: 30.01.2014
Сообщений: 17,825
|
||
| 02.11.2023, 13:26 | ||
|
Приведу здесь ответ создателя языка (Кена Томпсона):
Отсюда: https://softwareengineering.st... 268#273268
А черным я выделил тот же тезис, который озвучивал выше: символов было не так много, чтобы было из чего выбирать.
1
|
||
|
Злостный нарушитель
10878 / 5817 / 1288
Регистрация: 12.03.2015
Сообщений: 26,855
|
||
| 02.11.2023, 13:32 | ||
![]() Дави по-немножку, крошка. © ----- Я так понимаю, в паскале использовалась какая-то другая таблица символов. Это бы многое объяснило.
0
|
||
|
19501 / 10106 / 2461
Регистрация: 30.01.2014
Сообщений: 17,825
|
||
| 02.11.2023, 13:35 | ||
|
1) Ему не нужно было так сильно экономить память 2) Ему не нужно было запускаться на каждом утюге того времени. Для нужд обучения студентов достаточно было взять что-то более-менее распространенное. А дальше эта проблема решилась сама собой введением стандартов на символьные таблицы.
0
|
||
|
фрилансер
6495 / 5724 / 1133
Регистрация: 11.10.2019
Сообщений: 15,286
|
|
| 02.11.2023, 13:41 | |
|
0
|
|
|
6296 / 3018 / 1053
Регистрация: 01.06.2021
Сообщений: 11,458
|
|
| 02.11.2023, 13:46 | |
|
Алексей1153, мне кажется ^ больше похож на указатель, наверное поэтому данный символ нашел применение в C++/CLI.
Хотя, я не против астериска *, вполне красивый символ. Я бы еще добавил в С++ астеризм ⁂
0
|
|
|
Злостный нарушитель
10878 / 5817 / 1288
Регистрация: 12.03.2015
Сообщений: 26,855
|
|
| 02.11.2023, 14:10 | |
|
0
|
|
|
6296 / 3018 / 1053
Регистрация: 01.06.2021
Сообщений: 11,458
|
||||||
| 02.11.2023, 14:17 | ||||||
|
Verevkin,
3
|
||||||
|
фрилансер
6495 / 5724 / 1133
Регистрация: 11.10.2019
Сообщений: 15,286
|
|
| 02.11.2023, 16:21 | |
|
0
|
|
|
6296 / 3018 / 1053
Регистрация: 01.06.2021
Сообщений: 11,458
|
|
| 02.11.2023, 16:30 | |
|
Алексей1153, это же была шутка. Но если не трогать язык, а просто говорить о визуальном восприятии кода при его написании, то все приличные IDE и даже редакторы поддерживают лигатуры. Полагаю, что не составит труда сделать так, чтобы при вводе нескольких последовательных астерисков редактор заменял другим символом (двойным астериском или астеризмом).
0
|
|
|
2 / 2 / 2
Регистрация: 29.06.2018
Сообщений: 139
|
||||||||||
| 03.11.2023, 14:18 [ТС] | ||||||||||
|
Как я понял, в C++ можно несколькими способами инициализировать строки:
0
|
||||||||||
|
фрилансер
6495 / 5724 / 1133
Регистрация: 11.10.2019
Сообщений: 15,286
|
||
| 03.11.2023, 14:25 | ||
|
Isur, указатель - это переменная, которая хранит адрес. Что тут сложного?
а тут нет ни одного указателя, зачем этот пример?
0
|
||
|
19501 / 10106 / 2461
Регистрация: 30.01.2014
Сообщений: 17,825
|
||
| 03.11.2023, 14:43 | ||
|
Кроме того массив в выражениях не копируется, поэтому попытка это копирование произвести, приведет опять же к указателю. Поэтому функции, в которые передают массив по значению, должны принять либо указатель (на первый элемент), либо ссылку на весь массив (ну это уже как и со всеми остальными типами единообразно работает).
0
|
||
|
Вездепух
13210 / 6843 / 1824
Регистрация: 18.10.2014
Сообщений: 17,306
|
|||||
| 03.11.2023, 18:28 | |||||
|
Именно указатели на начало строки в данном случае и описаны как const char * fname.Любой массив в языке С имеет свойство автоматически конвертироваться в указатель. Например, строковый литерал "Hello" - это массив. Если вам хочется получить указатель на его нулевой элемент вы можете сделать это явно как &"Hello"[0] - это совершенно легальный код. Но на самом деле выписывать такую конструкцию совсем не обязательно, ибо сам массив почти (почти!) всегда умеет неявно, т.е. сам по себе, приводиться к указателю на свой нулевой элемент. То есть если вам нужно вызвать функцию foo(const char *str) и передать туда указатель на начало строки "Hello", вы можете вызвать ее как foo(&"Hello"[0]), а можете просто вызвать ее как foo("Hello"). Это одно и то же.
0
|
|||||
|
2784 / 1937 / 570
Регистрация: 05.06.2014
Сообщений: 5,602
|
||
| 03.11.2023, 22:18 | ||
|
2) Если функция будет принимать объект типа "строка", этот объект придется как-то инициализировать. Причем, не выходя за рамки идеологии Си "абы как, токмо не как в Плюсах" (потому что если скопировать в Си решения из Плюсов, получатся Плюсы). А единственный способ это сделать - дергать конструкторы-деструкторы вручную. 3) Значительная часть стандартных сишных функций может подгружаться из системных dll-ок и их линуксовых аналогов. А там разнобой со стандартами передачи вышеупомянутых объектов в функцию. Один компилятор передает так, другой сяк и друг друга они не понимают. Так что, если функция должна грузиться из dll-ки, проще делать все на указателях.
0
|
||
|
Модератор
|
|||||||
| 03.11.2023, 22:38 | |||||||
![]()
0
|
|||||||
|
фрилансер
6495 / 5724 / 1133
Регистрация: 11.10.2019
Сообщений: 15,286
|
|
| 03.11.2023, 22:42 | |
|
bormant, да, сам адрес тоже называют указателем
Но для ТС это только усложнение укладывания в голове сейчас.
0
|
|
|
Злостный нарушитель
10878 / 5817 / 1288
Регистрация: 12.03.2015
Сообщений: 26,855
|
|
| 03.11.2023, 23:16 | |
|
0
|
|
|
Комп_Оратор)
|
|||||||||
| 04.11.2023, 08:01 | |||||||||
В западно-научно-технической практике, создание новой и малопонятной терминологии сопровождает, практически, любую вновь возникшую технологию. Это связано в основном с тем, что создатели хотят плюшек за разъяснения. Пишутся книги, технология развивается авторами пока конкуренты изнемогают в изучении, бизнес несёт деньги авторам за услуги по применению (время-деньги). Если вспомнить такие вещи как sudo, grep, touch, cat и пр. и пр., то удивляться не чему, Нужно учить. Впереди ещё много интересностей типа константности верхнего и нижнего уровня, итераторы, которые абстрагируют указатели инвалидным с точки зрения синтаксиса данных видов константности, способом. Умные указатели там же. Учите и практикуйте. В сети полно информации, а вы продолжаете искать, где ещё почитать. Это не плохо, но без попыток что-то писать и смотеть на результат, это не работает. ps array-to-pointer conversion и указатели на char в смысле строк C пока не трогайте.
0
|
|||||||||
| 04.11.2023, 08:01 | |
|
не понимаю указатели Не понимаю как переделать переменные в указатели не понимаю как делать. Динамические масивы, указатели и работа с ними Нужно отредачить код, добавив указатели и разделив исходную функцию на две. Как это сделать - я не особо понимаю :( Указатели и указатели на указатели, а также типы данных Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
В чем ценность человеческого опыта в глобальном смысле?
kumehtar 03.07.2026
Возможно, ценность человека не в том, что он однажды достигает мудрости, а в том, что он становится носителем карты пути. Он знает не только истину, но и последовательность внутренних изменений,. . .
|
интеграция AnyLogic с самописным REST API и переход на Odoo
anaschu 03.07.2026
Успешная интеграция AnyLogic с самописным REST API и переход на промышленную Odoo WMS
Сегодня проделал огромный путь от простой симуляции физических процессов до построения полноценной. . .
|
Поиск всех путей на ориентированном графе. Linux
dcc0 02.07.2026
Переработка старого кода из моей статьи.
Через несколько переработок от PHP кода к C89 (надеюсь, 89).
Но довольно запутанно получилось. Код для Linux.
Но если убрать time и то, что с ним. . .
|
Сам себя обучал rest api
anaschu 02.07.2026
Педагогический лайфхак: Почему чистый REST API для ученика намного круче, чем готовые библиотеки
Когда мы отказались от капризного JAR-файла AnyLogic и переписали код на стандартный HttpClient,. . .
|
|
rest api anylogic - выполнение модели на своём русском сайте
anaschu 02.07.2026
Как подружиться с AnyLogic Cloud API, победить провайдеров и развернуться Java-бэкенд в Docker на бесплатном хостинге: Двухдневный лог борьбы
Всем привет! Хочу поделиться свежим (и довольно. . .
|
Где деньги лежат
kumehtar 02.07.2026
Это - японская подводная лодка I-52 (тип C2, кодовое имя Momi) вышла из Японии в марте 1944 года с миссией в оккупированную немцами Францию (Лорьян). Это была одна из «Янаги»-миссий по обмену. . .
|
Krabik для WoW 3.3.5a, многоязычный
AmbA 02.07.2026
Допилил бота, думаю что окончательно. Изменения:
- добавлена многоязычность
- добавлено снятие скриншотов
- добавлено поддержание бафов хождения по воде (для жреца, дк и шамана)
- и так, по. . .
|
Алиса нашла кучу ошибок компиляции и запуска в проекте, который без проблем компилировался и запускался)))
anaschu 30.06.2026
Я пока посмеюся, но завтра проверю. А вообще интерсно. Дал алисе файл, в котором точно нет ошибок компиляции и запуска, и попросил их найти. Нашла кучу)))
Критические ошибки, мешающие компиляции и. . .
|