указатели с



Автор Єирсов Михаил задал вопрос в разделе Другие языки и технологии

Указатели С++ и получил лучший ответ

Ответ от Борис Большем[эксперт]
Node a - a является стукртурой
Node *a - а является указателем на структуру, либо на массив стуктур (в таком случае - a[0] - первая стуктура в массиве, a[1] - вторая, и тд)
Node ** a - а является указателем на указатель на структуру, либо указателем на массив указателей на стуктуру ( в таком случае - a[0] - первый указатель в массиве на структуру, a[1] второй)

Ответ от Александр Воронцов[гуру]
Требует ссылку на указатель вроде
так компилится
struct Node{
int d;
Node *next;
Node *prev;
};
void add(Node **pend, int d){}
int main()
{
Node *p;
p = new Node();
add(&p,6);
}
вот что генерируется а asm код
// для наглядности ...если маил не испортит листинг:
.file"2.cpp"
.intel_syntax noprefix
.text
.globl _Z3addPP4Nodei
.type_Z3addPP4Nodei, @function
_Z3addPP4Nodei:
.LFB0:
.cfi_startproc
pushebp
.cfi_def_cfa_offset 8
movebp, esp
.cfi_offset 5, -8
.cfi_def_cfa_register 5
popebp
.cfi_restore 5
.cfi_def_cfa 5, 4
ret
.cfi_endproc
.LFE0:
.size_Z3addPP4Nodei, .-_Z3addPP4Nodei
.globl main
.typemain, @function
main:
.LFB1:
.cfi_startproc
pushebp
.cfi_def_cfa_offset 8
movebp, esp
.cfi_offset 5, -8
.cfi_def_cfa_register 5
andesp, -16
subesp, 32
movDWORD PTR [esp], 12
call_Znwj
movedx, eax
moveax, edx
movDWORD PTR [eax], 0
movDWORD PTR [eax+4], 0
movDWORD PTR [eax+8], 0
moveax, edx
movDWORD PTR [esp+28], eax
movDWORD PTR [esp+4], 6
leaeax, [esp+28]
movDWORD PTR [esp], eax
call_Z3addPP4Nodei
moveax, 0
leave
.cfi_restore 5
.cfi_def_cfa 4, 4
ret
.cfi_endproc
.LFE1:
.sizemain, .-main
.ident"GCC: (Gentoo 4.5.3-r1 p1.0, pie-0.4.5) 4.5.3"
.section.note.GNU-stack,"",@progbits

Ответ от Ўрий-17[гуру]
** Указатель на массив указателей
Может и больше быть
Если хотите практически почти всё знать об указателях, есть книга Джеффа Элджера С++ Библиотека программиста, окунётесь в Мир указателей и узнаете много нового!

Ответ от Xraux[гуру]
** - указатель на указатель. Три - указатель на указатель на указатель, и так далее. Указатель - это тоже переменная, и естественно, что можно получить ее адрес. Конкретно в этом примере использование ** - совершенно лишнее (если это, конечно, не массив) . Вызов этой функции может быть таким:
Node* n = new Node(); // указатель на структуру
// ...
add(&n, 1);

Ответ от Николай Веселуха[гуру]
Двойной указатель, используется при передачи в функцию (метод) двумерного массива, может быть и многомерный **** для четырёхмерного массива.
Ну а уж каким боком, вы, там у себя в коде, хотите это пристроить - дело ваше.
В данном случае вы пытаетесь передать в функцию двумерный массив типа Node, хотя указатели в структуре предполагают использование двунаправленного связанного списка.

Ответ от 3 ответа[гуру]
Привет! Вот подборка тем с ответами на Ваш вопрос: Указатели С++
Указатель тип данных на Википедии
Посмотрите статью на википедии про Указатель тип данных
 

Ответить на вопрос:

Имя*

E-mail:*

Текст ответа:*
Проверочный код(введите 22):*