22 / 22 / 4
Регистрация: 07.11.2011
Сообщений: 154
|
|
1 | |
Понимание для чего вообще нужны указатели?12.11.2011, 20:12. Показов 31332. Ответов 112
Метки нет (Все метки)
Сейчас будет чистый мой тупняк. Слабонервным дальше не читать. Итак, для чего вообще нужны указатели? Я вот не пойму, зачем их надо было вообще придумывать??? Не понимаю их конкретной пользы, смысла. Кто-нибудь может по-человечески объяснить?
1
|
12.11.2011, 20:12 | |
Ответы с готовыми решениями:
112
Для чего нужны указатели? Для чего нужны указатели на функции? Ссылки и указатели, для чего нужны те и другие? Для чего нужны и зачем использовать smart-указатели? |
бжни
2473 / 1684 / 135
Регистрация: 14.05.2009
Сообщений: 7,162
|
|
12.11.2011, 22:04 | 22 |
там решили эту проблему просто - в бейсике просто нельзя передовать функции
впрочем в лиспе есть лямбды - передача лямбд полноценный, в отличии от си, способ обращения с функциями они же почти есть в с++
0
|
Заблокирован
|
|
12.11.2011, 22:12 | 24 |
Да не о том речь, как именно в отдельно взятом языке этот момент решили. А о том речь, что в каждом конкретном языке это все реализовано на уровне самого языка. Программисту не нужно думать, во что компилятор превратит исходный код. Ему нужно знать синтаксис, и уметь им пользоваться.
0
|
|
||||||
12.11.2011, 22:13
#26
|
||||||
Не по теме: Bers, вы сорвиголов!
0
|
Заблокирован
|
|
12.11.2011, 22:21 | 28 |
Речь у человека была не о Си, а о С++
Это большая разница, в том смысле, что в С++ хороший инструментарий может избавить программиста-пользователя от работы с таким низким уровнем. Сам я ничего против указателей не имею. Но если я пишу библиотечный класс, то пишу его таким образом, что бы пользователю не пришлось иметь дело с указателем. Ну или, на крайний случай, так этот указатель маскирую, что бы пользователь даже и не догадывался, что это указатель. И уж точно - никак через него не смог ничайно повредить работу класса. Если на верхнем уровне архитектуры присутствуют указатели, или голые операторы типа new/delete это признак ущербной архитектуры.
0
|
|
12.11.2011, 22:35
#30
|
0
|
Dekio
|
||||||
12.11.2011, 22:36
#31
|
||||||
0
|
22 / 22 / 4
Регистрация: 07.11.2011
Сообщений: 154
|
|
12.11.2011, 22:50 [ТС] | 32 |
Итак, осмелюсь ещё спросить. Точнее, я продолжаю тупить.Объявление:
Код
typedef char M[256]; ... M *folders,*files; Код
while(FindNextFileA(Search, &FileSearch)!=FALSE) { if (FileSearch.dwFileAttributes&FILE_ATTRIBUTE_DIRECTORY) { i++; } else { k++; } } Код
folders=new M[i]; files=new M[k]; Код
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 | 33 |
По-моему.. у тебя проблема в том, что тебе свой собственный код трудно прочитать.
Если я прав - тогда упрости его. И сразу видна логика. Для этого: 1. Избавься от тайдефа. Я уже вижу, что он тебя запутал. 2. Дай переменным более говорящие имена. Например: имя файла FileName массив имен файлов FileNameArray, ну или FileNameList Красивые имена помогают лучше понимать логику
0
|
22 / 22 / 4
Регистрация: 07.11.2011
Сообщений: 154
|
|
12.11.2011, 22:54 [ТС] | 34 |
Хорошо))) Исправлю) Просто проблема в том, что у меня не получается присвоить i-ой строке имя файла. То есть, нужно за раз записать в строку до 256 символов.
0
|
Higher
|
|
12.11.2011, 22:54 | 35 |
А какой у вас язык?
Если С - то без указателей вам никак не обойтись. Если С++ - можно и не использовать указатели. Более того, в большинстве случаев НЕ нужно использовать указатели. Ибо в с++ есть такая вещь как STL, которая предоставляет обертки для этих самых указателей. Эти обертки намного более удобны и безопасны, и пользоваться следует именно ими.
1
|
Фрилансер
|
|
12.11.2011, 22:57 | 38 |
0
|
22 / 22 / 4
Регистрация: 07.11.2011
Сообщений: 154
|
|
12.11.2011, 23:05 [ТС] | 40 |
Вот объявление:
Код
const int N=256;.... int FileSum,FolderSum; char **folders,**files; Код
while(FindNextFileA(Search, &FileSearch)!=FALSE) { if (FileSearch.dwFileAttributes&FILE_ATTRIBUTE_DIRECTORY) { FolderSum++; } else { FileSum++; } } Код
folders=new char [FolderSum][N]; files=new char[FileSum][N]; //Студия 2010 ругается на знак присваивания.
0
|
12.11.2011, 23:05 | |
12.11.2011, 23:05 | |
Помогаю со студенческими работами здесь
40
Что за драйвера такие, для чего они и нужны ли они вообще? С чего начать для понимание PHP Указатели на указатели: для чего они могут понадобятся? Понимание звуковой волны , да и вообще волн в целом Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |