Нафига{ нужны/ указатели???
Пользователи, просматривающие топик: none
|
Зашли как: Guest
|
Имя |
Сообщение |
<< Старые топики Новые топики >> |
|
|
Нафига{ нужны/ указатели??? - 2007-08-22 07:31:10.366666
|
|
|
Lanalex92
Сообщений: 23
Оценки: 0
Присоединился: 2007-08-14 07:03:05.706666
|
Недавно начал я с++ изучать по учебнику павловской…вроде все понятно,кроме одного - ЗАЧЕМ нужны указатели в си? у неё в учебнике непонятно написано…Объясните.плиз (З.Ы.В гугль посылать не надо - я уже там был - ниче толковово не написано.)
|
|
|
RE: Нафига{ нужны/ указатели??? - 2007-08-22 08:01:02.610000
|
|
|
Hack_
Сообщений: 180
Оценки: 0
Присоединился: 2007-04-20 11:03:24.856666
|
Указатели предоставляют программам возможность моделировать передачу данных в функцию по ссылке, что увеличивает эффективность и создавать и манипулировать динамическими структурами данных, т.е. структурами данных, которые могут нарастать и сокращаться, например, такими как связные списки, очереди, стеки и деревья.
|
|
|
RE: Нафига{ нужны/ указатели??? - 2007-08-22 09:30:22.850000
|
|
|
T
Сообщений: 1100
Оценки: 0
Присоединился: 2006-01-14 00:15:36
|
таким людям нада отвечать другим языком: указатель, это таже переменная, только содержит адрес ячейки памяти, в которой лежат полезные данные, обьём которых ограничен только размером памяти. Т.е. если указатель занимает например 2 слова, то данные, к которым он "ведёт" могут занимать много больший обьём… Когда у тебя есть ф-я, которая например декодирует пакетированый поток данных, размер пакета 1 Мб, то что легче отправить? указатель или 1 метр данных? Правильно! Указатель… Или допустим у тебя есть некая строка символов, и тебе быстро нада получить их коды, ты просто создаёш указатель, который указывает на эти символы, но тип данных задаёш например Int, Byte(чел. числ)… и при разном обращении к одинаковым данным они будут иметь "разное значение"… и т.д. У указателя очень много применений, и не зря они даже реализованы на аппаратном уровне.
|
|
|
RE: Нафига{ нужны/ указатели??? - 2007-08-22 13:09:20.770000
|
|
|
necrostaz
Сообщений: 172
Оценки: 0
Присоединился: 2007-02-27 15:54:59.460000
|
quote:
и не зря они даже реализованы на аппаратном уровне. что ты имеешь ввиду? указатель ж это абстракция в языке Си а на деле просто адрес
|
|
|
RE: Нафига{ нужны/ указатели??? - 2007-08-22 13:48:16.626666
|
|
|
tt_andrey
Сообщений: 213
Оценки: 0
Присоединился: 2007-07-03 13:54:36.440000
|
бугога, аффтар жжот! пейшы исчо!
|
|
|
RE: Нафига{ нужны/ указатели??? - 2007-08-22 14:35:51.360000
|
|
|
saimon 2metra
Сообщений: 4281
Оценки: 0
Присоединился: 2007-01-26 10:56:51.426666
|
С указателями ваще самая жопа! Будьте очень внимательны, т.к. невовремя разадресованные или наоборот вовремя неразадресованные переменные приводят к порче памяти проги.
|
|
|
RE: Нафига{ нужны/ указатели??? - 2007-08-22 18:41:06.403333
|
|
|
Kill_em_all
Сообщений: 395
Оценки: 0
Присоединился: 2005-03-25 22:40:01
|
Ты имеешь ввиду утечки памяти? Ну можно невсегда ее освобождать. Хотя за правило всегда освобождать память взять стоит
|
|
|
RE: Нафига{ нужны/ указатели??? - 2007-08-22 19:57:07.066666
|
|
|
Yashin
Сообщений: 964
Оценки: 0
Присоединился: 2007-05-09 20:18:01.153333
|
указатель - это пременная, которая содержит в себе адрес другой переменной. адрес переменной - это расстояние в байтах от начала блока памяти до самой переменной.
|
|
|
RE: Нафига{ нужны/ указатели??? - 2007-08-22 21:08:49.686666
|
|
|
tt_andrey
Сообщений: 213
Оценки: 0
Присоединился: 2007-07-03 13:54:36.440000
|
она хранит виртуальный адрес переменной :P
|
|
|
RE: Нафига{ нужны/ указатели??? - 2007-08-22 22:01:42.540000
|
|
|
alexbozhko
Сообщений: 1024
Оценки: 0
Присоединился: 2005-11-24 13:35:34
|
quote:
ORIGINAL: Yashin указатель - это пременная, которая содержит в себе адрес другой переменной. адрес переменной - это расстояние в байтах от начала блока памяти до самой переменной. Типа того, плюс требует некоторых специфических навыков, а еще лучше понимания происхдящего. Зачем нужны? Лучше на примере. Предположим, мы имеем некоторый очень сложный вычислительный алгоритм, который требуется реализовать. Он (алгоритм) предполагает наличие некоторого списка. Далее, если все элементы списка будут иметь одинаковую структуры алгоритм значительно упрощается, начинают работать некоторые формализованные решения. Но данные в списке имеют разную длину и вообще разнотипные. Как быть? А просто. Запихиваем в список не сами данные, а указатели на них. И пишем пару процедур, которые позволяют получить по указателю реальные данные. Все становится просто и логично.
|
|
|
RE: Нафига{ нужны/ указатели??? - 2007-08-22 22:15:12.750000
|
|
|
T
Сообщений: 1100
Оценки: 0
Присоединился: 2006-01-14 00:15:36
|
quote:
ORIGINAL: necrostaz quote:
и не зря они даже реализованы на аппаратном уровне. что ты имеешь ввиду? указатель ж это абстракция в языке Си а на деле просто адрес изучай АСМ
|
|
|
RE: Нафига{ нужны/ указатели??? - 2007-08-23 01:29:31.813333
|
|
|
rgo
Сообщений: 7170
Оценки: 281
Присоединился: 2004-09-25 05:14:25
|
quote:
ORIGINAL: necrostaz quote:
и не зря они даже реализованы на аппаратном уровне. что ты имеешь ввиду? указатель ж это абстракция в языке Си а на деле просто адрес указатель – это переменная хранящая адрес. :) насчёт указателей на аппаратном уровне я тоже не совсем понял, но тем не менее адрес и указатель – это несколько разные вещи. адрес – это значение указателя. так же как целое число – это значение переменной типа int.
|
|
|
RE: Нафига{ нужны/ указатели??? - 2007-08-23 17:21:06.590000
|
|
|
necrostaz
Сообщений: 172
Оценки: 0
Присоединился: 2007-02-27 15:54:59.460000
|
quote:
изучай АСМ изучал уже когда-то )) указателей там нет,есть регистры,сегменты,смещения а указателей нема )) UPD Хотя если имеется ввиду адресация, то на мой взгляд это тоже абстракция, просто в качестве данных выступают адреса.
|
|
|
RE: Нафига{ нужны/ указатели??? - 2007-08-23 17:25:32.440000
|
|
|
necrostaz
Сообщений: 172
Оценки: 0
Присоединился: 2007-02-27 15:54:59.460000
|
quote:
адрес – это значение указателя это и имелось ввиду, хотя конечно надо быть точнее ))
|
|
|
RE: Нафига{ нужны/ указатели??? - 2007-08-23 17:45:45.230000
|
|
|
furiousangel
Сообщений: 1116
Оценки: 0
Присоединился: 2005-05-28 06:31:47
|
указатели позволяют вызывать например функции косвенно. если есть некоторая структура, одним з полей которой есть другая структура точно такого же типа то компилятор тебя просто пошлет или скомпилит с такими косяками… выход использовать вместо структуры вложеной в структуру такого же типа указатель на структуру такого же типа. примеров куча, особенно неявных… такие выкруты применяются очень редко ЗЫ. Сам учу по этой книге Си…. говенная книга имхо. Она приводит примеры х3 откуда. И не пишет зачем оно надо. Керниган думаю лучше пойдет. Через недельку должны подвезти ANSI C.
|
|
|
RE: Нафига{ нужны/ указатели??? - 2007-08-23 18:15:58.913333
|
|
|
Yashin
Сообщений: 964
Оценки: 0
Присоединился: 2007-05-09 20:18:01.153333
|
применяются в списках. Список это набор данных определленного типа. Каждый элемент списка хранит в себе адрес следующего списка(однонаправленный список) и возможно предыдущего(двунаправленный). Чтобы найти какой либо элемент в списке, нужно знать, хотя бы начальный элемент для однонаправленного, или конечный элемент для двунаправленного. Показал бы на примере, но я Си не знаю. Извините не в тему, вот пример на паскале,но язык хорошо читается думаю поймете.
Простейший список
type
pnum = ^tnum;
tnum = record
x: Integer;
next: pnum;
end;
var
FirstElem: tnum;
p: pnum;
begin
// Создание 15 элементов
For i=0 to 14 do
begin
new(p); // Эта функция выделяет память для переменной типа tnum и помещает ее адрес в переменную p.
p.x := Random(100);
p^.next := FirstElem.next;
FirstElem.next := p; // То есть мы вставили новый элемент вторым после начала списка, а остальные сдвинулись вперед.
end;
end.
|
|
|
RE: Нафига{ нужны/ указатели??? - 2007-08-23 18:20:39.313333
|
|
|
alexbozhko
Сообщений: 1024
Оценки: 0
Присоединился: 2005-11-24 13:35:34
|
Да где они только не применяются…
|
|
|
RE: Нафига{ нужны/ указатели??? - 2007-08-25 12:45:06.010000
|
|
|
int21h
Сообщений: 105
Оценки: 0
Присоединился: 2007-08-25 12:05:16.730000
|
Указатель - вобще указатели называют "Переменная типа указатель" тоесть указатель работает с адресами и значениями переменных 1. работа с адресами на С (см.ниже) #include <stdio.h> void main() { int f,c=21,*p; /* f и с обычние переменные типа int , *p - указатель типа int */ f=c+5; /* тут всё ясно */ p=&f; /*указатель p указывает на переменную f , &- для получения адреса */ printf(" %p \n"); /* выводим адрес указателя , так как указатель указывает на пер. F , то этот же адрес имеет переменная f */ }(извените что так подробно) 2.Работа со значениями хранищимися в указателях (разыменование) вот у нас есть переменная int s ; она должна получить значение указателя int *p; каторый указывает допустим на какуюто переменную int v=55 ;\\ инициализировали и присвоили значение ; p=&v; \\ использовали указатель … так что указатель p указывает на переменную v ; теперь нам нужно чтоб переменная s получила значение хранящиеся в указателе p - > итог s=*p ; (всё очень просто, пыталсо максимально подробно объеснить)
|
|
|
RE: Нафига{ нужны/ указатели??? - 2007-08-25 14:53:50.396666
|
|
|
tt_andrey
Сообщений: 213
Оценки: 0
Присоединился: 2007-07-03 13:54:36.440000
|
quote:
printf(" %p \n"); следовало написать printf("%0X \n", p);
|
|
|
RE: Нафига{ нужны/ указатели??? - 2007-08-25 15:16:19.860000
|
|
|
int21h
Сообщений: 105
Оценки: 0
Присоединился: 2007-08-25 12:05:16.730000
|
Кстати совет , всегда старайтесь по мере необходимости инициализировать указатели ! как только создали указатель присвойте ему к примеру значение 0 . Вот из-за таких мелочей и получаюцо дыры в ОС'ах … p.s. Ссылки вас не спасут :)
|
|
|
RE: Нафига{ нужны/ указатели??? - 2007-08-28 23:18:50.943333
|
|
|
Yashin
Сообщений: 964
Оценки: 0
Присоединился: 2007-05-09 20:18:01.153333
|
int21h, а разве в VB есть указатели?
|
|
|
RE: Нафига{ нужны/ указатели??? - 2007-08-28 23:49:54.283333
|
|
|
sergzone
Сообщений: 33
Оценки: 0
Присоединился: 2007-08-28 19:41:52.666666
|
Указатели нужны для операции с паметью. Например иногда надо создать структуру бинарного дерева, хипа, хэша или просто листа для содержания тои или инои информацыи. Для етого используются указателя для того чтобы соеденить "листья" твоеи структуры (напр. бинарное дерево) ну а потом сохранить информацию в ячеику памяти (листе) а потом ее быстро наити и куда либо передать. Указатели так же очень стали популярны для обхода всяческих систем засчиты от вирусов и т.п. так как ти можешь делать вызовы АПИ используя обыкновенные указатели. Ну а сам указатель указывает на адресс в памяти. После того как указатель получает адресс, ты можешь писать в ету ячеику памяти через сам указатель.
|
|
|
RE: Нафига{ нужны/ указатели??? - 2007-08-29 13:48:21.733333
|
|
|
int21h
Сообщений: 105
Оценки: 0
Присоединился: 2007-08-25 12:05:16.730000
|
quote:
ORIGINAL: Yashin int21h, а разве в VB есть указатели? Речь идёт о С++ , к чему ты VB приплёл ?!
|
|
|
RE: Нафига{ нужны/ указатели??? - 2007-08-29 23:21:27.270000
|
|
|
Yashin
Сообщений: 964
Оценки: 0
Присоединился: 2007-05-09 20:18:01.153333
|
я думал ты на нем кодишь
|
|
|
RE: Нафига{ нужны/ указатели??? - 2007-08-29 23:44:02.423333
|
|
|
int21h
Сообщений: 105
Оценки: 0
Присоединился: 2007-08-25 12:05:16.730000
|
Я пишу на С стандарт 99-ого кода ! на VB пишу офисные утилиты , ассемблер - там где это необходимо (восновном читаю листинги дизассемблированного кода, полученного с помощью IDA Pro) >> int21h, а разве в VB есть указатели? Самого понятия как указатель нет , но есть что-то похожее , к сожалению не помню … так как системщина на С пишицо :-)(
|
|
|
|
|