26 / 26 / 26
Регистрация: 01.10.2015
Сообщений: 175
|
||||||
1 | ||||||
Что означает следующее выражение?03.10.2015, 09:28. Показов 1208. Ответов 13
Метки нет Все метки)
(
__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь
0
|
|
03.10.2015, 09:28 | |
Ответы с готовыми решениями:
13
Указатель: что означает следующее объявление?
Что означает выражение Что означает данное выражение y%=16 |
31 / 31 / 24
Регистрация: 08.06.2015
Сообщений: 107
|
|
03.10.2015, 09:38 | 2 |
![]() Решение
Default_070, функция вернет значение переменной типа двойного указателя на char
1
|
26 / 26 / 26
Регистрация: 01.10.2015
Сообщений: 175
|
|
03.10.2015, 09:40 [ТС] | 3 |
Спасибо.
0
|
3 / 1 / 1
Регистрация: 03.10.2015
Сообщений: 11
|
|
03.10.2015, 09:49 | 4 |
Ну, так, ты сам же и ответил. Это сделано потому, что массивы создаются динамически. А как иначе вернуть этот массив вызывающему коду?
Добавлено через 4 минуты Функция вернёт указатель на массив указателей. И указатели этого массива сами по себе будут массивами - будут содержать строки.
0
|
1369 / 592 / 199
Регистрация: 02.08.2011
Сообщений: 2,882
|
|
03.10.2015, 09:52 | 5 |
нет такого типа, как двойной указатель. Есть указатель на указатель.
Функция вернет такой указатель, который указывает на указатель, указывающий на char. нефига. функция вернет указатель, указывающий на такой указатель, который указывает на начало массива символов, а не на массив указателей.
1
|
26 / 26 / 26
Регистрация: 01.10.2015
Сообщений: 175
|
|
03.10.2015, 09:52 [ТС] | 6 |
Да, как-то не задумался над возвращаемым значением и моим вопросом. Получается я ответил сам не осознавая этого.
0
|
3 / 1 / 1
Регистрация: 03.10.2015
Сообщений: 11
|
|
03.10.2015, 10:18 | 7 |
А какой смысл в этом случае создавать указатель на указатель ? Можно было бы обойтись просто указателем.
Хотя делать так никто и не запрещает, но какой в этом смысл? Добавлено через 15 минут Если развернуть ответ подробнее то локальные переменные(созданные внутри функции) удаляются из памяти сразу после выхода из функции, то есть сразу после того как функции закончила свою работу. Так как эти переменные создаются в стеке Си или С++. Не путать с аппаратным стеком процессора. Динамические же переменные создаются в так называемой "куче" (мне не нравится этот термин). И они там будут существовать до тех пор пока программа сама их не удалит, или же до тех пор пока программа не завершит свою работу. Динамически создавая массив ты имеешь доступ к нему только через указатель, этот указатель единственная вещь которая связывает созданные данные с твоей программой. Если вдруг по ошибке или ещё как, ты переназначишь этот указатель на другой блок данных, то первоначальный блок данных будет потерян. Хотя и останется в памяти до самого завершения работы программы.
0
|
1369 / 592 / 199
Регистрация: 02.08.2011
Сообщений: 2,882
|
||||||
03.10.2015, 11:13 | 8 | |||||
Чтобы в такой указатель на указатель присвоить результат, возвращаемый функцией.
Кликните здесь для просмотра всего текста
0
|
3 / 1 / 1
Регистрация: 03.10.2015
Сообщений: 11
|
|
03.10.2015, 11:26 | 9 |
Я же писал уже что в этом случае достаточно простого указателя на массив, а не указатель на указатель.
Разве нет ? Да и ты сам подтверждаешь это своим примером. Просто надо будет создавать простой указатель, а, не указатель на указатель.
0
|
1369 / 592 / 199
Регистрация: 02.08.2011
Сообщений: 2,882
|
|
03.10.2015, 11:37 | 10 |
В моем примере нет массива.
У ТС есть двумерный массив. Память для него выделяется внутри функции, а очищается вне функции. Чтобы корректно почистить память вне функции, нужно узнать этот адрес вне функции. Чтобы узнать адрес вне функции от массива созданного внутри функции, можно вернуть указатель на начало массива. Вот и верни не указателем на указатель этот адрес из функции. Добавлено через 3 минуты Опечатка delete P;
0
|
3 / 1 / 1
Регистрация: 03.10.2015
Сообщений: 11
|
|
03.10.2015, 11:43 | 11 |
Как это соотносится с тем о чём мы спорим
Ну, да ладно. Спор ни о чём получился.
0
|
1369 / 592 / 199
Регистрация: 02.08.2011
Сообщений: 2,882
|
|
03.10.2015, 11:57 | 12 |
Указатель на массив указателей
void ***ptr; //с соответствующим выделением памяти. Массив указателей void **ptr //с соответствующим выделением памяти. Указатель *ptr
0
|
3 / 1 / 1
Регистрация: 03.10.2015
Сообщений: 11
|
|||||||||||
03.10.2015, 12:34 | 13 | ||||||||||
Это всё понятно.
Для указателя на указатель это то что нужно было топикстартеру, насколько я понял
по твоему описанию, где всё будет упаковано в одну длинную строку
И вся суть спора была в том что если делать так как ты описываешь то двойной указатель не нужен.
0
|
1369 / 592 / 199
Регистрация: 02.08.2011
Сообщений: 2,882
|
|
03.10.2015, 12:45 | 14 |
Не по теме: freeworker, мои претензии к всё._______________ Это не я описываю. Это у ТСа написано так. Я не ТС. он спросил зачем нужно - я показал. Добавлено через 3 минуты Не по теме: Может у него массив слов. Он функцию не показывал.
0
|
03.10.2015, 12:45 | |
Помогаю со студенческими работами здесь
14
Подскажите что означает это выражение Битовые операции, что означает выражение
Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |