Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
||
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[3.15.214.155] |
|
Сообщ.
#1
,
|
|
|
Не могу сообразить, как реализовать на С следующую идею.
Есть 2 указателя int *aa; WORD *ww; но они находятся в разных местах и не знают о друг друге ничего. В какой-то момент происходит aa = new int[100]; В момент обработки необходимо получить содержимое указателя аа. Как я пытался решить эту задачу: void __fastcall TMainForm::Button1Click(TObject *Sender) { int *aa; WORD *ww; void *pp; pp = &aa; // ????? aa = new int[100]; ww = (WORD *)pp; // error ww[0] = 100; // пишем куда-то не туда delete[] aa; } Как привельно сделать, чтобы ww работала с массивом аа? |
Сообщ.
#2
,
|
|
|
<br>void main()<br>{<br> int *aa;<br> WORD *ww;<br> void *pp;<br> <br> aa = new int[100];<br> pp = aa;<br> ww = (WORD *)pp;<br> ww[0] = 100;<br> delete[] aa;<br>}<br> |
Сообщ.
#3
,
|
|
|
В извращенном варианте моя задача решается так:
{ int *aa; WORD *ww; int pp; pp = (int)&aa; aa = new int[100]; ww = (WORD *)((int *)pp)[0]; // ответ aa[0] = 200; ww[0] = 100; delete[] aa; } Может кто-нибудь знает как это записывается проще. |
Сообщ.
#4
,
|
|
|
2 lsv-X
Если Вы хотите рассматривать один и тот же адрес как начало массива WORD и int, то можно делать так: {<br> int *aa;<br> WORD *ww;<br><br> aa = new int[100];<br> ww = (WORD *)aa; // <-- ответ<br> aa[0] = 200;<br> ww[0] = 100;<br> delete[] aa;<br>} |
Сообщ.
#5
,
|
|
|
2Prog2Michael: См. второй ответ...
|
Сообщ.
#6
,
|
|
|
.alex
См. второй ответ... Если Вы имеете ввиду ответ #1(Ваш), то там неоправдано используется void *pp. Если Вы имеете ввиду ответ #2, то там есть вопрос: Как привельно сделать, чтобы ww работала с массивом аа? на который я и попытался ответить. |
Сообщ.
#7
,
|
|
|
Цитата Если Вы имеете ввиду ответ #1(Ваш), то там неоправдано используется void *pp. Я имел ввиду мой ответ. Про void *pp, я согласен, что он тут не нужен, но человек спрашивал как сделать с этим pp, а что нужно и что не нужно должен решать, тот кто спрашивал... |
Сообщ.
#8
,
|
|
|
[oftopic]
.alex но человек спрашивал как сделать с этим pp Во-первых. Неправда Ваша. imho там вопрос Цитата Как привельно сделать, чтобы ww работала с массивом аа? Во-вторых. Зачем автор вопроса поместил сообщение под номером #2? [oftopic] |
Сообщ.
#9
,
|
|
|
Заметьте, что вариант №1 и вариант №2 автора вопроса несколько отличаются, а я привёл ответ для заданного вопроса, переделав данную задачу не убирая ни каких переменных, а просто исправив ошибки...
|
Сообщ.
#10
,
|
|
|
[oftopic]
.alex IMHO 1. Заголовок темы "Указатель на указатель" не соответствует вопросу. 2. Автор вопроса не читал "букварь" по Си, т.к. не имеет представления о тривиальном приведения типов. 3. Ваш ответ #1 содержит правильный вариант, но не дает "теоретического" обоснования. Возможно поэтому автор повторил вопрос, хотя может быть не прочитал Ваш ответ. 4. Я, ответом #3, уточнил постановку вопроса и привел достаточный код. [/oftopic] |