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

Передача параметров в функцию - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Вывести фамилии учеников в порядке их возрастания http://www.cyberforum.ru/cpp-beginners/thread572233.html
Здравствуйте! Помогите пожалуйста с задачей: Известен рост каждого из 25-ти учеников класса. Нет ни одной пары учеников,имеющих одинаковый рост. Вывести фамилии учеников в порядке их возрастания. Реализовать надо через структуру. Версия Microsoft Visual C++2008
C++ Помогите запустить программу. Раньше работала, сейчас не запускается.. вот сам проект http://www.cyberforum.ru/cpp-beginners/thread572196.html
Необходимые для работы программы DLLки. C++
Даже самая простая консольная программа таскает за собой различного рода системные DLL файлы, из за чего часто случается, что при переносе программы на другой компьютер запустить её невозможно. К примеру, даже моё простое консольное приложение использует msvcr100d.dll, msvcp100d.dll, kernel32.dll. Попробовал перенести экзешник на другой компьютер с той же виндой64, этих файлов не оказалось. ...
C++ Помогите с программой
для задачи коммивояжера нашла код #include <stdlib.h> #include <time.h> #include <stdio.h> int wpchk(int w, int *wpts) { int i=0; int flg=0; while(wpts!=-1)
C++ Седловая точка http://www.cyberforum.ru/cpp-beginners/thread572164.html
Элемент матрицы назовем седловой точкой, если он является наименьшим в своей своей строке и одновременно наибольшим в своем столбце или, наоборот, является наибольшим в своей строке и наименьшим в своем столбце. Для заданной матрицы nXm (где n, m - константы) напечатать индексы всех ее седловых точек. Вот код программы: #include <stdio.h> #include <conio.h> int const max_widht=3; int const...
C++ Разбить предложение на слова и записать в массив дано предложение из 10 слов заполнить ими массив из 10 элементов подробнее

Показать сообщение отдельно
Gepar
 Аватар для Gepar
1173 / 529 / 20
Регистрация: 01.07.2009
Сообщений: 3,512
12.05.2012, 16:14  [ТС]     Передача параметров в функцию
Рано обрадовался: по таинственным причинам указатель меняется только 1 раз при первом вызове, а дальше не меняется. Почему такое может быть?

main
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
int main()
{
    int   * res, resLen;
    CScreen  S0;
    S0 . Add ( CRectangle ( 1, 10, 20, 30, 40 ) );
    S0 . Add ( CRectangle ( 2, 20, 10, 40, 30 ) );
    S0 . Add ( CTriangle ( 3, CCoord ( 10, 20 ), CCoord ( 20, 10 ), CCoord ( 30, 30 ) ) );
    S0 . Optimize();
    S0 . Test ( 0, 0, resLen, res );
     // resLen = 0, res = [ ]
    delete [] res;
    S0 . Test ( 21, 21, resLen, res );
     // resLen = 3, res = [ 1 2 3 ]
    delete [] res;
    S0 . Test ( 16, 17, resLen, res );
     // resLen = 1, res = [ 3 ]
    delete [] res;
    S0 . Test ( 30, 22, resLen, res );
     // resLen = 2, res = [ 1 2 ]
    delete [] res;
    S0 . Test ( 35, 25, resLen, res );
     // resLen = 1, res = [ 2 ]
    delete [] res;
Моя функция
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
    //должна вернуть сколько(resLen) фигур пересекают точку x,y и их id(массив res)
    void Test(int x, int y, int& resLen, int* &res)
    {
        int size=10;
        resLen= 0;
        res= new int[size];
        Elem* temp(head);
        while(temp)
        {
            if(temp->obj->bx1 <= x && temp->obj->bx2 >= x)
             if(temp->obj->by1 >= y && temp->obj->by2 <= y)
              if(temp->obj->belong(x,y))
              {
                  res[resLen++]=temp->obj->ID;
                  if(resLen==size)
                  {
                      size*=2;
                      res=(int*) realloc(res,sizeof(int)*size);
                  }
              }
            temp=temp->next;
        }
 
    }
Как видно выделение памяти я провожу каждый раз, а дебагер говорит что адрес res поменялся лишь при первом вызове Test. Почему так?

При этом даже в самой функции вот прохожу я эту строку в дебагере пошагово
C++
1
res= new int[size];
и адрес первый раз меняется, а все остальные - нет. Как это понимать?
 
Текущее время: 13:23. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru