Такой код: 
void main() {
line *$1 = NULL,
       *$2 = NULL,
      *$3 = NULL;
line *p = $1;
_debug(p);
r->setRside(p, $2, $3);
}
// функция отладки чтобы глядеть значение переданного аргумента
void _debug(line* papa) {
int i = 0;
return;
}
//(А) Кусок кода в котором использую передачу аргументов неопределенного числа 
void Rule::setRside (...) {
        rside = new RightSide;
        va_list symbols;
        va_start (symbols, lengthRule);
        rside->setAlltable(symbols, lengthRule);
        va_end(symbols);
}
//(Б)продолжение
void RightSide::setAlltable (va_list args, int numArgs) {
        alltable = new line* [numArgs];
        for (int i = 0; i < numArgs; i++)
                alltable[i] = va_arg(args, line*);
}
В дебаге (_debug(p)) проверяю значение - все верно. Как только передаю в кусок кода "А" аргументы, то значение первого и остальных аргументов превращаются в грязь типа 0xFFFFFFF. Не понимаю где они могут меняться.