Форум программистов, компьютерный форум CyberForum.ru

Передача указателей в функции - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Виртуальные функции. Абстрактные классы. http://www.cyberforum.ru/cpp-beginners/thread95698.html
Есть у меня абстрактный класс class DataManager { protected: Configuration configuration; public: DataManager(Configuration config); virtual List<Buss> loadBuss() = 0; virtual List<Route> loadRoute() = 0; virtual List<Reys> loadReys() = 0;
C++ Описать процедуру, меняющую содержимое переменных X и Y вот тут решил разобраться с языком си, решал задачки и вот напоролся на такую: Описать процедуру Swap(X, Y), меняющую содержимое переменных X и Y. Собстна как сделать такую штуку? http://www.cyberforum.ru/cpp-beginners/thread95683.html
Ввод и вывод вектора C++
Такой вопрос. Программа должна вводить вектор из случайных чисел и выводить его на экран. При этом ввод и вывод нужно оформить в виде отдельных функций. Вопрос же в следующем: если я делаю это всё (ввод и вывод) в составе одной функции, то всё работает. Если же разделяю - то ничего не выводится. Помогите пожалуйста.
C++ c++ в кпк
Вобщем начну с самого начала. Захотел я изучит c++, до этого работал с php в wap, но так как комп згорел, а на новый щас дениг нет поставил я на кпк pocket gcc и немогу найти инфу по програмированию в с помощью этого компилятора. Где только не спарашивал, в ответ тищина. Надеюсь здесь мне помогут, если я всё правельно понял то это портированый с пк на кпк gcc.
C++ Метод секущих http://www.cyberforum.ru/cpp-beginners/thread95627.html
Помогите, пожалуйста, с кодом к этой программе. 1 Определить координаты экстремальной точки унимодальной функции f(x)=11x2+23x+1,1 методами первого и второго порядков (метод секущих), с точностью =0,001. 2 Определить тип найденного экстремума Поиск экстремума провести в диапазоне от a до b. а= - 1100; в=1100.
C++ Сформировать одномерный массив из элементов матрицы Есть двумерный массив, 5*6 Сформировать одномерный массив, каждый элемент которого равен наибольшему по модулю элементу соответствующего столбца. подробнее

Показать сообщение отдельно
_Eldar_
 Аватар для _Eldar_
44 / 29 / 3
Регистрация: 31.10.2009
Сообщений: 200
15.02.2010, 06:57     Передача указателей в функции
Привет всем. Вообщем изучаю с\с++ по книге Павловской, дошел до динамических структур данных(списки, стеки, очереди...), Вообщем наткнулся там на пример списка, не могу понять как передаються ьам указатели в функции. А конкретно не понятны передачи указателей в функции add и remove. Объясните пожалйуста подробно, заранее благодарен всем отозвавшимся.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
#include <windows.h>
#include <conio.h>
#include <iostream>
 
using namespace std;
 
struct Node{
    int d;
    Node *next;
    Node *prev;
};
 
Node * first(int d);
void add(Node **pend, int d);
Node * find(Node * const pbeg, int i);
bool remove(Node **pbeg, Node **pend, int key);
Node * insert(Node * const pbeg, Node **pend, int key, int d);
//-------------------------------------
int main(){
 
    SetConsoleCP(1251);
    SetConsoleOutputCP(1251);
 
    Node *pbeg = first(1); // Формирование первого элемента списка
    Node *pend = pbeg;     //Список заканчивается, едва начавшись
    // Добавление в конец списка четырех элементов 2, 3, 4 и 5
    for(int i = 2; i < 6; i++) add(&pend, i);
    //Вставка элемента 200 после элемента 2
    insert(pbeg, &pend, 2, 200);
    //удаление элемента 5;
    if(!remove(&pbeg, &pend, 5)) cout << "не найден";
    Node *pv = pbeg;
    while(pv){ // Вывод списка на экран
        cout << pv->d << " ";
        pv = pv->next;
    }   
    
    _getch();
    return 0;
}
//--------------------------------------
//Формирование первого элемента
Node * first(int d){
    Node *pv = new Node;
    pv->d = d; pv->next = 0; pv->prev = 0;
    return pv;
}
//---------------------------------------
//Добавление в конец списка
void add(Node **pend, int d){
    Node *pv = new Node;
    pv->d = d; pv->next = 0; pv->prev = *pend;
    (*pend) ->next = pv;
    *pend = pv;
}
//-----------------------------------------
//Поиск элемента по ключу
Node * find(Node * const pbeg, int d){
    Node *pv = pbeg;
    while(pv){
        if(pv->d == d) break;
        pv = pv->next;
    }
    return pv;
}
//-----------------------------------------
//Поиск элемента по ключу
bool remove(Node **pbeg, Node **pend, int key){
    if(Node *pkey = find(*pbeg, key)){
        if(pkey == *pbeg){
            *pbeg = (*pbeg)->next;
            (*pbeg)->prev = 0;
        }
        else if(pkey == *pend){
            *pend = (*pend)->prev;
            (*pend)->next = 0;
        }
        else{
            (pkey->prev)->next = pkey->next;
            (pkey->next)->prev = pkey->prev;
        }
        delete pkey;
        return true;
    }
    return false;
}
//---------------------------------
//Вставка элемента
Node * insert(Node * const pbeg, Node **pend, int key, int d){
    if(Node *pkey = find(pbeg, key)){
        Node *pv = new Node;
        pv->d = d;
        // 1 - установление связи нового узла с последующим:
        pv->next = pkey->next;
        // 2 - установление связи нгового узла с предыдущим:
        pv->prev = pkey;
        // 3 - установление связи предыдущего узла с новым:
        pkey->next = pv;
        // 4 - установление связи последующего узла с новым:
        if(pkey != *pend)(pv->next)->prev = pv;
        // Обновление указателя на конец списка,
        // если узел вставляется в конец :
        else *pend = pv;
        return pv;
    }
    return 0;
}
Добавлено через 26 минут
т.е. не понятно объявление этих функций, передача в них указателей и обращение к ним в теле функций.

Добавлено через 4 часа 31 минуту
народ, помогите разобраться пожалуйста
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 19:01. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru