|
|
||||||
Почему поинтер обнуляется ?30.04.2019, 02:01. Показов 8394. Ответов 118
Метки нет (Все метки)
0
|
||||||
| 30.04.2019, 02:01 | |
|
Ответы с готовыми решениями:
118
Почему все обнуляется??? Почему мой указатель обнуляется? Почему не обнуляется указатель через функцию? |
| 15.05.2019, 00:36 [ТС] | |
|
0
|
|
|
Mental handicap
1246 / 624 / 171
Регистрация: 24.11.2015
Сообщений: 2,429
|
|||||||
| 15.05.2019, 12:23 | |||||||
|
Ведь фундаментальный тип процессор может засунуть целиком в регистр, и инкремент этой переменной обычно это одна команда, что-то например
TL; DR По поводу, пре- против постинкремента, это просто полезный хак, который, я считаю стоит запомнить, кто знает что может пригодится в жизни. ... По поводу практических примеров, они есть, но исскуственно это симулировать имеет, наверное, весьма мало смысла. Я бы сказал, что пример можно было бы предоставить, если бы компиляторы всегда генерировали один и тот же код для одними тех же конструкций, но сейчас это не так - в зависимости от алгоритма, ключей компилятора, и т.д. одни и те же инструкции в разных контекстах могут превращаться в совершенно разный код, вплоть до того, что он вообще будет не похож на изначальный, но будет давать тот же результат. Т.е. заморачиватся сильно не стоит, покрайней мере это опять же не очередное правило, мол так делай всегда, а так нет. Для обычного увеличения счетчика для перебора массива, например, можно использовать что нравится, т.к. выхлоп что для пост-, что для преинкремента будет одинаковый, а где нужно конкретное поведение конкретного оператора, тогда уже стоит тот и использовать. Только типо если посмотрю на выхлоп компилятора, и меня там что-то не устроит по быстродействию, я могу вспомнить, что, ага, а вот может если здесь поменять с пре- на постинкремент я получу распараллеливание.
0
|
|||||||
|
|
|||||||||||
| 19.06.2019, 18:34 [ТС] | |||||||||||
|
Друзья добрый день
новая непонятка
а вот с принтом
0
|
|||||||||||
|
5120 / 4574 / 855
Регистрация: 07.10.2015
Сообщений: 9,462
|
|||||||
| 19.06.2019, 18:44 | |||||||
|
Последний адрес - адрес строки "\0". Но сам адрес-то - ненулевой! Сделайте так:
0
|
|||||||
|
Mental handicap
1246 / 624 / 171
Регистрация: 24.11.2015
Сообщений: 2,429
|
||||||
| 19.06.2019, 18:52 | ||||||
0
|
||||||
|
|
||
| 19.06.2019, 19:23 [ТС] | ||
её не было вначалеи NULL который я вначале добавил тоже сказали неправильно. самое правильное именно "\0" если что меня поправят
0
|
||
|
19501 / 10106 / 2461
Регистрация: 30.01.2014
Сообщений: 17,825
|
|
| 19.06.2019, 19:30 | |
|
alexbmd, там вам сказали в каком-то контексте, который отсюда не виден. Так что то, что могло быть правильно в том контексте, в этом уже не будет правильным. Вот вы написали такой цикл, который проверяет указатель на ноль, и контекст сменился, а значит и советы все утратили силу. И надо заново голову включать
0
|
|
|
|
|||||||
| 19.06.2019, 19:38 [ТС] | |||||||
|
Azazel-San, DrOffset,
вот так работает
PS: это этот контекст Добавлено через 7 минут так работает у меня в двух компиляторах . если пишу '\0' то в одном не работает
0
|
|||||||
|
19501 / 10106 / 2461
Регистрация: 30.01.2014
Сообщений: 17,825
|
||||
| 19.06.2019, 19:50 | ||||
|
Добавлено через 50 секунд Добавлено через 6 минут
0
|
||||
|
зомбяк
1585 / 1219 / 345
Регистрация: 14.05.2017
Сообщений: 3,940
|
||||||
| 20.06.2019, 13:35 | ||||||
|
alexbmd,
0
|
||||||
|
|
|||||||||||||||||||||||||||
| 20.06.2019, 15:27 [ТС] | |||||||||||||||||||||||||||
![]() да, там был while а не for но смысл тот-же ...так чтото я в очередной раз запутался повторение-мать учения, еще раз: цель: распечатать n строковых литерал , не указывая точное их кол-во. используя while. тезис 1: есть только два способа прямой инициализациио строковых литерал без указания длины, так ?
тезис 2: в случае массива, обязательно надо указать последний терминирующий элемент. единственно верно так, а не NULL и т.д. ?
тезис 4: в случае списка ссылок, обезательно указывать дополнительный терминирующий элемент ?
вот смотрите атачмент. на размерность не обращяйте внимание, на сам смысл смотрите. третий элемент 0 и у него есть адрес. т.е. *pa[] = {"dog", "cat", 0}; так я понимаю?
0
|
|||||||||||||||||||||||||||
|
19501 / 10106 / 2461
Регистрация: 30.01.2014
Сообщений: 17,825
|
|||||
| 20.06.2019, 15:50 | |||||
Сообщение было отмечено alexbmd как решение
РешениеВ том посте (а именно в 63) у вас был написан массив указателей. А сейчас у вас массив массивов (двумерный массив). Так что я был абсолютно прав, вы нас обманывали и контекст был совсем другой ![]() Если у вас массив указателей, то вы можете использовать нулевой указатель в качестве терминального элемента. Если у вас двумерный массив, то нет, вы не можете использовать указатель (просто потому, что указатель - это не массив). И в таком случае, да, вы можете использовать пустую строку для обозначения терминального элемента. При этом, способ проверки дошли ли вы до конца будет отличаться. Об этом уже выше говорили. Для массива указателей с нулевым указателем в качестве терминального элемента вы должны проверять значения указателей в этом массиве. Так было сделано у вас в примере поста #63 (если там исправить "\0" на NULL или 0). Для двумерного массива, в случае терминального элемента представленного пустой строкой, вы должны проверять первый по счету элемент каждого подмассива, как это сделать вам показали в ответах #65 и #70. Да, в случае использования массива указателей вы также можете использовать пустую строку в качестве терминального элемента, т.к. массив приводятся к указателю неявно. Но тогдапроверять вы должны уже не указатели, а первый по счету элемент доступный по каждому указателю в массиве (так же, как в случае подмассива). Добавлено через 7 минут Да, обязательно указывать. pa неявно привелись к указателям и дали адреса, которымм и были проинициализированы элементы pa, наравне с последним элементом-нулем.
1
|
|||||
|
|
|||
| 20.06.2019, 16:32 [ТС] | |||
|
(массив)список указателей конечно . опечатка сори. поинтеры.
самму идею я понял спасибо. значит все тезисы я правильно представил - всё имено так. то что там есть имена ele1,ele2 это частный случай . мы же можем объявить *pa[]={ele1,ele2}; а можем *pa[]={"dog"."cat"}; но даже если как второй вариант всеравно строки распологаются в памяти , имеют свои адреса. а *pa[] состоит из начального адреса каждой строки. так ? получается разместит ли компилятор массив как данные или посчитает этот элемент адрессом на это влияют кавычки а не само появление массива после запятой ? {"dog","cat","pig"} у всех есть кавычки значит все массивы данные {"dog","cat", 0} нет кавычек значит будет адрес. да но любой адрес не позволяет присвоить. только нулевой. правильно я понимаю ? вообще компилятор там ждет const char", если пишу адрес из памяти дает ошибку error: invalid conversion from ‘long int’ to ‘const char*’ получается он либо воспринимает "some string" либо 0. но почему на ноль не даешь ошибку как выше. или в компиляторе есть какоето условие что кроме const char* можно только 0 указывать ?
0
|
|||
|
19501 / 10106 / 2461
Регистрация: 30.01.2014
Сообщений: 17,825
|
|||||
| 20.06.2019, 16:44 | |||||
|
Добавлено через 1 минуту Если объявлено как массив массивов, то инициализироваться будет значениями этих строк, т.е. в каждый из подмассивов будет скопировано содержимое этих строк соответственно. Термин "строка" равно "массив" в данном случае. Т.к. С-style строка - это массив сивмволов. Литеральная строка имеет тип константного массива символов со статическим размещением.
1
|
|||||
|
|
|||||||
| 20.06.2019, 17:03 [ТС] | |||||||
|
с массивом массивов тут всё понятно речи не идёт
я говорил тут про *[]
запихнул сейчас такое
0
|
|||||||
|
Mental handicap
1246 / 624 / 171
Регистрация: 24.11.2015
Сообщений: 2,429
|
|
| 20.06.2019, 17:34 | |
|
0
|
|
|
зомбяк
1585 / 1219 / 345
Регистрация: 14.05.2017
Сообщений: 3,940
|
||||||||||||||||||
| 20.06.2019, 17:36 | ||||||||||||||||||
|
Добавлено через 2 минуты
1
|
||||||||||||||||||
|
|
||||||||||||||||
| 20.06.2019, 21:32 [ТС] | ||||||||||||||||
|
там в 100 спрятал букву d как и тут (const char *)(&x)
а
чтото я туплю,
можно так
Добавлено через 1 час 15 минут Как указатели dog cat запихнуть в pp, без посредников?
0
|
||||||||||||||||
|
6352 / 3523 / 1428
Регистрация: 07.02.2019
Сообщений: 8,995
|
||||||||||||
| 20.06.2019, 21:51 | ||||||||||||
ну или
1
|
||||||||||||
|
|
||||||
| 21.06.2019, 13:05 [ТС] | ||||||
|
друзья, почему если поинтер содержит адресс и мы прыгаем на следующий адресс то разница между ними уже 8 байт и это понятно но если попытаться принт эту разницу то буде 1 а не 8 ?
0
|
||||||
| 21.06.2019, 13:05 | |
|
Почему во время чтения из файла переменная row_i в цикле постоянно обнуляется? Переполнение знаковых целых чисел: почему значение переменной обнуляется, а не записывается младшее значение? Почему массив не обнуляется Не обнуляется таймер почему-то Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
сукцессия 29. Переход от одних деревьев на другие делать более или менее вероятностным?
anaschu 12.07.2026
Насколько смена типов микоризы — исключительное событие в двухвековой сукцессии? Оценка вероятности в пространстве параметров
В текущей версии модели успешно реализован ключевой механизм. . .
|
сукцессия 27. Думаю, как переделывать уже написанную статью с планами на сукцессию.
anaschu 12.07.2026
Анализ соответствия модели требованиям
Реализованные компоненты:
Механизм закисления почвы через протонную помпу
Конкуренция между типами микориз
pH как триггер сукцессии
C/ P соотношение. . .
|
Сукцессия 26. Мат модель создана.
anaschu 12.07.2026
Модель смены растительных сукцессий посредством управления грибами работает внутри небольшой ячейки почвы, восстанавливающейся после пожара, где ненадолго бывшее царство хвойных снова захватили. . .
|
Решил проблему с ошибкой пагинации сообщений с сервера на алгоритме обхода дерева "Эстафета хвоста".
Hrethgir 12.07.2026
Проблема была в том, что удалялась именно новая кнопка, а не старая. Ни один ИИ не обнаружил это, а сам я смог только когда с работой стало попроще и когда заставил работать будущее автономное. . .
|
|
сукцессия 25. Хронология ошибок
anaschu 12.07.2026
# От 50-тонного гриба до устойчивого леса: хроника ошибок при построении модели вековой сукцессии микоризы
## О чём эта статья
В процессе построения ОДУ-модели (система дифференциальных. . .
|
сукцессия 24. Промежуточное общее описание модели
anaschu 12.07.2026
Хендофф: модель АМ→ЭКМ сукцессии микоризы (ризосфера, 50 лет)
Содержание проекта
Симуляция вековой (50 лет) экологической сукцессии в почве леса
Основные участники: АМ-гриб, ЭКМ-гриб,. . .
|
сукцессия 23. Более физиологичная физиология, более экологичная экология, более диффурные диффуры.
anaschu 12.07.2026
Что реально нашли и починили за эти 5 часов
Правило Линдемана (КПД конверсии сахара в тело, kEff) — раньше 100% полученного углерода шло прямо в биомассу гриба; теперь только kEff=0. 5 (после. . .
|
сукцессия 22. От артефактов к физиологии: калибровка агентной модели грибной сукцессии для воспроизведения сезонной динамики и pH-плато
anaschu 11.07.2026
Аннотация
В данной работе представлена калибровка агентной модели динамики грибных сообществ (fungal-succession), направленная на устранение нефизичных артефактов (коллапс биомассы, мгновенное. . .
|