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

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

Восстановить пароль Регистрация
Другие темы раздела
C++ Дано вещественное x, вычислить y http://www.cyberforum.ru/cpp-beginners/thread664822.html
Дано вещественное x, вычислить y: _______| -1, x<=0; __y(x)={ 0, 0<x<=1; _______| 1, 1<x; Не использовать составных условий. Использовать вложенные условные операторы.
C++ Эмуляция колеса мыши "вниз" Мне нужно эмулировать колесо мыши вниз чтоб при расстояние 4 юнита оно крутилось: if (MouseDown) { static bool MouseDown = false; if (UnitDistance() <= 4) /* <---Есть */ { MouseDown = false; } else { http://www.cyberforum.ru/cpp-beginners/thread664819.html
C++ задание по информатике
Помогите составить программу и блоксхему слоупоку. И поясните, пожалуйста, про используемые в задаче переменные, операторы, функции и прочие конструкции языка си. Заранее спасибо. 1)Даны x, y, z. Вычислить a, b, используя приведенные ниже формулы. Получить max(a, b). (см картинка 1) 2)см картинка 2
C++ Вычислить произведение матрицы на вектор и максимальный элемент полученого вектора.
Реализовать следущее задание с использованием динамического массива. Для доступа к элементам динамического массива использовать два подхода: через явное розименование указателя и через индексы. Вычислить произведение матрици на вектор и максимальный элемент полученого вектора.
C++ по работе идентификатора cout http://www.cyberforum.ru/cpp-beginners/thread664791.html
Всем привет. Вот пример кода. Значение переменной с текстом выводит, а значение той же переменной без текста -ошибка. cout << fvar << "текст"; // это работает, cout << fvar <<; // не работает
C++ Посчитать среднее арифметическое чисел Посчитать среднее арифметическое чисел начальное и конечное вводить с клавиатуры. подробнее

Показать сообщение отдельно
lowercase
 Аватар для lowercase
211 / 200 / 34
Регистрация: 09.05.2012
Сообщений: 494
06.10.2012, 19:17     Передача указателя в функцию
Здраствуйте. Если не охота читать гору текста то этот абзац + последущий за ним код можете пропустить. Задали на лабе сделать некий дестпетчер управления процесами в системе windows с использованием winapi. Суть программы в том, что создается очередь процесов, в виде связного списка. Программа, согласно заданой стратегии должна из очереди выполнять по одному процесу, до тех пор, пока очередь не станет пустой. В убогой методичке(имхо - она убогая, вот выросту и сделаю лучше) есть такой пример, который, кстати, как мне кажется, тоже является черт знает чем, и поэтому он вызвал у пару вопросов:
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
struct ocher{
  PROCESS_INFORMATION pi;
  int type_pr;
  ocher *next;
};
struct queue{
  ocher *bg;
}
queue create_queue(){//создание пустой очереди процессов
  queue x;
  x.bg=NULL;
  x.end=NULL;
  return x;
}
void add_queue(queue *q, PROCESS_INFORMATION pi, int type_pr);//добавление процесса в очередь
PROCESS_INFORMATION select_proc_queue(queue *q, int *type_pr);
//выбор процеса на выполнение согласно заданой стратегии
int main()
{
  queue cp = create_queue(); 
  int type_pr=1;
  PROCESS_INFORMATION pi;
  STARTUPINFO si;
  for (int i=0;i<100;i++){
    ZeroMemory(&si,sizeof(STARTUPINFO));
    CreateProcess(NULL, <имя файла>, NULL, NULL, FALSE, CREATE_SUSPENDED, NULL, NULL, &si, &pi);
    add_queue(&cp,pi,type_pr);
  }
  while (cp!=NULL){
    pi= select_proc_queue(cp,&type_pr);
    ResumeThread(pi.hThread);
    WaitForSingleObject(pi.hProcess,INFINITE);
    if (type_pr!=3){
      ZeroMemory(&si,sizeof(STARTUPINFO));
      CreateProcess(NULL, <имя файла>, NULL, NULL, FALSE, CREATE_SUSPENDED, NULL, NULL, &si, &pi);
      add_queue(&cp,pi,type_pr+1);
    }
  }
  return 0;
}
И так сама соль даной темы. Есть две строчки + струтуры описаные выше:
queue cp = create_queue();
void add_queue(queue *q, PROCESS_INFORMATION pi, int type_pr)

Каким образом в функции add_queue в конец очереди cp добавить новый елемент?
Кслову тема указателей с/с++ для меня всегда была проблемой По сему факту прошу помощи.

Добавлено через 7 минут
собсно у меня метод add_queue выглядит так:
C
1
2
3
4
5
6
void add_queue(queue* q, PROCESS_INFORMATION pi, PID pid){
    process* p = q->begin;
    while(p)
        p = p->next;
    p = init_process(pi, pid);// инициализация струтуры. 
}
здесь process аналог структуры ocher. увы этот код не рабоатет, при отладке я вижу что после вызова add_queue адрес cp.begin остается прежним

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