Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.86/159: Рейтинг темы: голосов - 159, средняя оценка - 4.86
22 / 22 / 4
Регистрация: 07.11.2011
Сообщений: 154

Понимание для чего вообще нужны указатели?

12.11.2011, 20:12. Показов 34622. Ответов 112
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Сейчас будет чистый мой тупняк. Слабонервным дальше не читать. Итак, для чего вообще нужны указатели? Я вот не пойму, зачем их надо было вообще придумывать??? Не понимаю их конкретной пользы, смысла. Кто-нибудь может по-человечески объяснить?
1
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
12.11.2011, 20:12
Ответы с готовыми решениями:

Для чего нужны указатели?
Кто может объяснить для чего нужны указатели и смысл их? в интернете одна муть и еще для чего нужно new delete

Для чего нужны указатели на функции?
для чего нужны эти указатели на функции... не проще ли вызвать саму функцию, чем заводить под нее указатель и им пользоваться...

Ссылки и указатели, для чего нужны те и другие?
Что такое ссылки? Что такое указатели? ДЛЯ чего служат те и другие?

112
Заблокирован
12.11.2011, 22:03
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от Thinker Посмотреть сообщение
Забудьте про бейсик, вот это как раз и есть прошлый век
Ничего не скажу про вижалбасик, потому что не в теме.

Но кюбасик, который ещё под ДОСом бегал - один из лучших языков в мире, имхо.
Если б был бы такой же, только современный, и под Виндовс. Я б с удовольствием в нем кодил.
0
бжни
 Аватар для alex_x_x
2473 / 1684 / 135
Регистрация: 14.05.2009
Сообщений: 7,162
12.11.2011, 22:04
Цитата Сообщение от Bers Посмотреть сообщение
Ну а как передают массивы в функции в тех языках, где нет указателей? Например, в бейсике?
там решили эту проблему просто - в бейсике просто нельзя передовать функции
впрочем в лиспе есть лямбды - передача лямбд полноценный, в отличии от си, способ обращения с функциями
они же почти есть в с++
0
Заблокирован
12.11.2011, 22:10
Thinker, единственное где без этого не обойтись!

Добавлено через 1 минуту
Bers, в Pascal / Delphi , например передача массивов в функцию осуществляется специальной синтаксической конструкцией - array of integer -передача в функцию массива чисел.
0
Заблокирован
12.11.2011, 22:12
Цитата Сообщение от alex_x_x Посмотреть сообщение
там решили эту проблему просто - в бейсике просто нельзя передовать функции
впрочем в лиспе есть лямбды - передача лямбд полноценный, в отличии от си, способ обращения с функциями
они же почти есть в с++

Да не о том речь, как именно в отдельно взятом языке этот момент решили.
А о том речь, что в каждом конкретном языке это все реализовано на уровне самого языка.

Программисту не нужно думать, во что компилятор превратит исходный код. Ему нужно знать синтаксис, и уметь им пользоваться.
0
Эксперт С++
 Аватар для Thinker
4267 / 2241 / 203
Регистрация: 26.08.2011
Сообщений: 3,802
Записей в блоге: 5
12.11.2011, 22:12
Цитата Сообщение от mc.Duck Посмотреть сообщение
Thinker, единственное где без этого не обойтись!

Не по теме:

Поскольку язык Си мне очень нравится, то лично мне указатели нужны. Быть может, вы программируете на java и т.д. Тогда спору нет, там не нужны указатели.

1
12.11.2011, 22:13

Не по теме:

Bers, вы сорвиголов!


 Комментарий модератора 
Оффтоп надо выделять тегами
0
Эксперт С++
 Аватар для Thinker
4267 / 2241 / 203
Регистрация: 26.08.2011
Сообщений: 3,802
Записей в блоге: 5
12.11.2011, 22:14
Цитата Сообщение от Bers Посмотреть сообщение
Программисту не нужно думать, во что компилятор превратит исходный код. Ему нужно знать синтаксис, и уметь им пользоваться.

Не по теме:

Так в Си указатели это часть синтаксиса.

0
Заблокирован
12.11.2011, 22:21
Цитата Сообщение от Thinker Посмотреть сообщение
Так в Си указатели это часть синтаксиса.
Речь у человека была не о Си, а о С++

Это большая разница, в том смысле, что в С++ хороший инструментарий может избавить программиста-пользователя от работы с таким низким уровнем.

Сам я ничего против указателей не имею. Но если я пишу библиотечный класс, то пишу его таким образом, что бы пользователю не пришлось иметь дело с указателем.
Ну или, на крайний случай, так этот указатель маскирую, что бы пользователь даже и не догадывался, что это указатель. И уж точно - никак через него не смог ничайно повредить работу класса.

Если на верхнем уровне архитектуры присутствуют указатели, или голые операторы типа new/delete это признак ущербной архитектуры.
0
Эксперт С++
 Аватар для Thinker
4267 / 2241 / 203
Регистрация: 26.08.2011
Сообщений: 3,802
Записей в блоге: 5
12.11.2011, 22:32
Цитата Сообщение от Bers Посмотреть сообщение
Речь у человека была не о Си, а о С++

Не по теме:

сами что ли придумали. ну да ладно, мне эта пустая болтовня неинтересна

0
12.11.2011, 22:35

Не по теме:

Цитата Сообщение от Thinker Посмотреть сообщение
сами что ли придумали. ну да ладно, мне эта пустая болтовня неинтересна
А... точно.. ну вообще то да. Человек имел ввиду современные промышленные языки, а не с++
Ну значит, я опять о чем то о своём подумал

0
12.11.2011, 22:36
 Комментарий модератора 
Прекращаем оффтоп
0
22 / 22 / 4
Регистрация: 07.11.2011
Сообщений: 154
12.11.2011, 22:50  [ТС]
Итак, осмелюсь ещё спросить. Точнее, я продолжаю тупить.Объявление:
Code
1
2
3
typedef char M[256];
...
M *folders,*files;
Вот я считаю количество папок и файлов:
Code
1
2
3
4
5
6
7
8
9
10
11
while(FindNextFileA(Search, &FileSearch)!=FALSE)
{
if (FileSearch.dwFileAttributes&FILE_ATTRIBUTE_DIRECTORY)
{
i++;
}
else
{
k++;
}
}
Выделяю память:
Code
1
2
folders=new M[i];
files=new M[k];
Цикл, в котором надо раскидать по массивам имена файлов и папок:
Code
1
2
3
4
5
6
7
8
9
10
11
12
Search=FindFirstFileA(di, &FileSearch);
FindNextFileA(Search, &FileSearch);
while(FindNextFileA(Search, &FileSearch)!=FALSE)
{
if (FileSearch.dwFileAttributes&FILE_ATTRIBUTE_DIRECTORY)
{
тут что-то
}
else
{
и тут что-то
}
Как мне записать строку?

Добавлено через 9 минут
Уточню, вместо что-то в i-элемент массива должна писаться строка с именем файла или директории.
0
Заблокирован
12.11.2011, 22:51
По-моему.. у тебя проблема в том, что тебе свой собственный код трудно прочитать.
Если я прав - тогда упрости его. И сразу видна логика.

Для этого:
1. Избавься от тайдефа. Я уже вижу, что он тебя запутал.
2. Дай переменным более говорящие имена.

Например: имя файла FileName
массив имен файлов FileNameArray, ну или FileNameList

Красивые имена помогают лучше понимать логику
0
22 / 22 / 4
Регистрация: 07.11.2011
Сообщений: 154
12.11.2011, 22:54  [ТС]
Хорошо))) Исправлю) Просто проблема в том, что у меня не получается присвоить i-ой строке имя файла. То есть, нужно за раз записать в строку до 256 символов.
0
Higher
 Аватар для diagon
1953 / 1219 / 120
Регистрация: 02.05.2010
Сообщений: 2,925
Записей в блоге: 2
12.11.2011, 22:54
А какой у вас язык?
Если С - то без указателей вам никак не обойтись.
Если С++ - можно и не использовать указатели. Более того, в большинстве случаев НЕ нужно использовать указатели.
Ибо в с++ есть такая вещь как STL, которая предоставляет обертки для этих самых указателей. Эти обертки намного более удобны и безопасны, и пользоваться следует именно ими.
1
Заблокирован
12.11.2011, 22:56
diagon,хм..а можно поподробнее об обертках?
0
Заблокирован
12.11.2011, 22:57
Цитата Сообщение от Диман56 Посмотреть сообщение
Хорошо))) Исправлю) Просто проблема в том, что у меня не получается присвоить i-ой строке имя файла. То есть, нужно за раз записать в строку до 256 символов.
Ты исправь, и исправленный вариант выложи. Там уже в принципе, сразу должно быть видно, где у тебя ошибка в логике.

Плохие имена, и некрасивые тайпдефы могут запросто запутать не только читателя, но и самого автора кода)
0
Фрилансер
Эксперт С++
 Аватар для Dekio
5845 / 1226 / 499
Регистрация: 23.11.2010
Сообщений: 3,373
Записей в блоге: 1
12.11.2011, 22:57
Цитата Сообщение от mc.Duck Посмотреть сообщение
хм..а можно поподробнее об обертках?
http://ru.wikipedia.org/wiki/%... 0%BE%D0%B2
0
Заблокирован
12.11.2011, 22:59
Dekio, благодарю! Об этом знал, но не знал как называется)
0
22 / 22 / 4
Регистрация: 07.11.2011
Сообщений: 154
12.11.2011, 23:05  [ТС]
Вот объявление:
Code
1
2
3
const int N=256;....
int FileSum,FolderSum;
char **folders,**files;
Цикл:
Code
1
2
3
4
5
6
7
8
9
10
11
while(FindNextFileA(Search, &FileSearch)!=FALSE)
{
if (FileSearch.dwFileAttributes&FILE_ATTRIBUTE_DIRECTORY)
{
FolderSum++;
}
else
{
FileSum++;
}
}
А вот тут на меня компилятор ругается
Code
1
2
folders=new char [FolderSum][N];
files=new char[FileSum][N]; //Студия 2010 ругается на знак присваивания.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
12.11.2011, 23:05

Для чего нужны и зачем использовать smart-указатели?
В Страуструпе не нашел, кто подскжает где можно про них прочитать ?)

Что за драйвера такие, для чего они и нужны ли они вообще?
Что за драйвера такие, для чего они и нужны ли они вообще? 1 Intel SATA Preinstall driver (For AHCI / RAID Mode) Note: Press F6...

С чего начать для понимание PHP
Добрый день, прошу помощи по изучению веб программирования, на днях пришлось начать администрировать простой сайт на html, вспомнил время...

Указатели на указатели: для чего они могут понадобятся?
Изучаю C++, дошёл до указателей на указатели. Там пишут что эта тема не обязательна. Для чего они могут понадобятся?

Понимание звуковой волны , да и вообще волн в целом
Не могу связать в голове физическую модель звуковой волны (последовательное сгущение и разряжение воздуха) и графическую (синусоида) ....


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
40
Закрытая тема Создать тему
Новые блоги и статьи
сукцессия 30. Фосфорный и азотный замки по "честному" закону лимитирования Либиха
anaschu 16.07.2026
Основные достижения за последние дни 1. Механизм отложенного высвобождения фосфора Добавлен специальный пул для медленного разложения меланизированных гиф ЕСМ Реализована разная скорость. . .
Запрет пометки на удаление и отмены проведения
Maks 16.07.2026
Алгоритм из решения ниже реализован на нетиповом документе "ПутевойЛист" разработанного в КА2. Задача: запретить помечать на удаление и отменять проведения путевого листа при условии, если он сдан. . .
Как надо было делать правильно - вообще не слушать ИИ, его дело - текст.
Hrethgir 15.07.2026
А вообще надо было делать не так, чтобы не исправлять ошибку https:/ / www. cyberforum. ru/ blogs/ 223907/ 10996. html , правильно было : удалил кнопку, а потом добавил её. Всё это стресс конечно. Почему?. . .
Знаете, от чего появляется стресс?
kumehtar 15.07.2026
Стресс появляется оттого, что вы, зная как поступить правильно, делаете наоборот. Ларри Уингет
Нас бьют, а мы крепчаем? Какая чушь!
kumehtar 15.07.2026
Вот это вот бытующее мнение, что человек меняется только под действием проблем, всегда считал вредоносным. Поверь, от проблем у людей появляются не изменения, а нервное расстройство и ПТСР. А. . .
сукцессия 29. Переход от одних деревьев на другие делать более или менее вероятностным?
anaschu 12.07.2026
Насколько смена типов микоризы — исключительное событие в двухвековой сукцессии? Оценка вероятности в пространстве параметров В текущей версии модели успешно реализован ключевой механизм. . .
сукцессия 27. Думаю, как переделывать уже написанную статью с планами на сукцессию.
anaschu 12.07.2026
Анализ соответствия модели требованиям Реализованные компоненты: Механизм закисления почвы через протонную помпу Конкуренция между типами микориз pH как триггер сукцессии C/ P соотношение. . .
Сукцессия 26. Мат модель создана.
anaschu 12.07.2026
Модель смены растительных сукцессий посредством управления грибами работает внутри небольшой ячейки почвы, восстанавливающейся после пожара, где ненадолго бывшее царство хвойных снова захватили. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru