|
|
||||||
Почему поинтер обнуляется ?30.04.2019, 02:01. Показов 8446. Ответов 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 в цикле постоянно обнуляется? Переполнение знаковых целых чисел: почему значение переменной обнуляется, а не записывается младшее значение? Почему массив не обнуляется Не обнуляется таймер почему-то Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
| Опции темы | |
|
|
Новые блоги и статьи
|
|||
|
сукцессия 37. Внедрил дипсик в свой оркестр из ИИ. У него закончилось пространство чата, потому опубликую выводы из его работы здесь
anaschu 21.07.2026
====================================================================
КОНТЕКСТ: Моделирование микоризной сукцессии (AM → ECM)
====================================================================
. . .
|
сукцессия 36. Делаю прогоны модели около порога бифуркации (превращения эндо микоризы в экто микоризу)
anaschu 21.07.2026
СУКЦЕССИЯ МИКОРИЗ: КАК МАТЕМАТИКА ОБЪЯСНЯЕТ ПОДЗЕМНУЮ ВОЙНУ
Мы привыкли думать, что лес — это деревья. А грибы — это то, что мы собираем в корзинку осенью. Но если заглянуть под землю, окажется,. . .
|
ИИ и человечность
kumehtar 21.07.2026
Забавно, что общаясь с ИИ, я замечаю, насколько он высказывается умно, и насколько верит в людей. Он умеет прощать. Он знает как отвечать не обесценивая опыт других людей, даже если сам не верит. Он. . .
|
Нейтральные знания ..., ... чистая наука. Пока что-то проходит модерацию на Хабре, стоит развить мысль ...
Hrethgir 20.07.2026
К таким радикальным взглядам я конечно в той публикации не приходил, но чтобы скоротать вечер, решил углубиться немного.
1. Почему показания термометра заряжены целью?
Цель заложена в самом. . .
|
|
Установка нескольких штампов электронной подписи в строго определенных местах файла docx
ВладимирСамохин 19.07.2026
(В!) Работа с Электронной подписью - это неотъемлемая часть современного документооборота. Но что делать, если нужно поставить несколько штампов электронной подписи в строго определенных местах. . .
|
сукцессия 35. Научная статья о проделанной работе
anaschu 19.07.2026
Написал в формате латекс и пдф
|
Вангую, что это не пройдёт модерацию, и на неделе я запущу свой сервер.
Hrethgir 19.07.2026
Эта публикация сейчас в песочнице и ждёт приглашения.
https:/ / habr. com/ ru/ sandbox/ 295048/
По ссылке 403. Не очень информативно такую ссылку постить.
Запись от Usaga размещена Сегодня в 06:46 . . .
|
сукцессия 33. открытые вопросы от клауде
anaschu 19.07.2026
"Что накопилось за эту часть А — тринадцать правок, из которых шесть пришли из ваших вопросов и каждая оказалась реальной ошибкой, а не калибровкой: односторонний симбиоз, отсутствующий листопад,. . .
|