Задать вопрос
  • Перевод из C на Java. Указатели?

    kostik450
    @kostik450
    Вот это место
    int decode(int correct_mode, int *errs, unsigned long *cw)

    сделать так:
    public int[] decode(int correct_mode, int errs, int cw);

    Соответственно внутри функции везде вместо
    *errs и *cs
    сделать без звезд, то есть так:
    errs и cs

    ну и в конце функции, там где return(2), возвращаем так:
    int[] arr = int long[3];
    arr[1]=2;
    arr[1]=errs;
    arr[2]=cs;
    return arr;
    return 0 и return 1 аналогично.

    А вызов оформляем так:
    int[] arr = decode(correct_mode, errs, cw);
    result = arr[0];
    errs = arr[1];
    cw = arr[2];
    Вроде бы ничего не забыл.

    Короче, возвращаем результат в виде массива, а потом десериализируем массив.
    Можно, кстати и изначально в виде массива передавать,
    внутри этот массив «курочить» и возвращать его же как результат.

    А можно и вообще ничего не передавать и не возвращать, все внутри класса, то есть в итоге мы придем к тому, что написал уважаемый Maccimo в варианте a)

    Но если стоит задача тупо переписать код С++ на Java без рефакторинга, то мой метод более идеален.
    Ответ написан
    3 комментария
  • Перевод из C на Java. Указатели?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    В вашем коде указатели действуют как ссылки, а ссылки то в JAVA есть. Побитовые операции тоже имеются. Так что я не вижу проблемы в том, что бы переписать это дело в JAVA

    int decode(int corect_mode, ref int errs, ref long cw)
    {
        //остальной код
        //...
        else {
            errs = 0;
            if(parity(cw))
            {
                errs = 1;
                return 0     
            }
            //Остальной код
        }
    
    }
    
    
    Ответ написан
    4 комментария