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

Работа функции с переменным числом параметров - C++

Восстановить пароль Регистрация
 
UrbanLynx
0 / 0 / 0
Регистрация: 13.02.2013
Сообщений: 29
19.03.2013, 20:20     Работа функции с переменным числом параметров #1
Добрый вечер!
Есть функция создающая квадратную матрицу, по числу параметров и самим элементам. Опущу все проверки и другое, не важное здесь:
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
double **getmatrix(int n, ...)            
{  
    int *p = &n;
    p++;               
    double *pp = (double *)p;    
 
    double **m = NULL;
    NewMatrix(m,4,4); 
    for (int i=0; i<4; i++)
    {
        for (int j=0; j<4; j++)
        {
            m[i][j] = (*pp);
        }
    }
    return m;
}
 
void NewMatrix(double **&mMatrix,int Rows, int Cols)
{
    mMatrix = new double *[Rows];   
    for (int i=0; i<Rows; i++)
    {
        mMatrix[i] = new double [Cols];
    }
}
Вызов например так:
C++
1
double **m=getmatrix(16,1.,0.,0.,0.,0.,1.,0.,0.,0.,0.,1.,0.,4.,0.,0.,1.);
Функция прекрасно работает в пустом консольном проекте с одним мэйном, собственно матрицей строчкой выше и двумя функциями.
Теперь самое интересное - есть win forms приложение и в какой-то момент вызывается эта функция с этими же аргументами. Но при переходе к следующему за n числу(p++) переходит на какой то левый адрес, где числа нет.
Что подскажете по этому поводу?
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Kuzia domovenok
 Аватар для Kuzia domovenok
1882 / 1737 / 116
Регистрация: 25.03.2012
Сообщений: 5,907
Записей в блоге: 1
19.03.2013, 20:23     Работа функции с переменным числом параметров #2
Да никто так не делает.
1) для функций с переменным числом аргументов есть va_start и.т.п! google it
2) Но даже va_start тут не нужен и мало когда используется!
3) для передачи в функцию массива чисел передают указатель на первый элемент массива и не парят себе мозги с va_start
Croessmah
Модератор
Эксперт С++
 Аватар для Croessmah
11822 / 6801 / 769
Регистрация: 27.09.2012
Сообщений: 16,869
Записей в блоге: 2
Завершенные тесты: 1
19.03.2013, 20:26     Работа функции с переменным числом параметров #3
Цитата Сообщение от UrbanLynx Посмотреть сообщение
переходит на какой то левый адрес, где числа нет.
Как передавать параметры в функцию - дело компилятора.
Работайте с va_list
UrbanLynx
0 / 0 / 0
Регистрация: 13.02.2013
Сообщений: 29
19.03.2013, 20:31  [ТС]     Работа функции с переменным числом параметров #4
Прошу прощения, забыл упомянуть - с va_list тоже пробовал конкретно по статье с rsdn'a, результат такой же как и с указателями. Вариант указателей привел как самый простой.

Цитата Сообщение от Kuzia domovenok Посмотреть сообщение
для передачи в функцию массива чисел передают указатель на первый элемент массива и не парят себе мозги с va_start
В передачи чисел и есть смысл - в зависимости от действий пользователя формируется одна из 9 матриц 4х4, которые и создаются этой функцией.
Yandex
Объявления
19.03.2013, 20:31     Работа функции с переменным числом параметров
Ответ Создать тему
Опции темы

Текущее время: 21:19. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru