Задать вопрос
  • Как передать ссылку на двумерный массив в функцию?

    jcmvbkbc
    @jcmvbkbc
    "I'm here to consult you" © Dogbert
    int mat(int ***matrix, int m, int n) {

    Зачем три звёздочки? Для двумерного массива достаточно было бы двух:

    int mat(int **matrix, int m, int n) {
      for (int i = 0; i < n; i++)
        for (int j = 0; j < m; j++) {
          printf("x: %d / y: %d /  ", i, j);
          matrix[i][j] = 1;
        }
    
      return 0;
    }
    
    int mato(int **matrix, int m, int n) {
      for (int i = 0; i < n; i++)
        for (int j = 0; j < m; j++)
          if (j == m - 1) {
              printf("%d\n", matrix[i][j]);
          } else {
              printf("%d ", matrix[i][j]);
          }
      return 0;  
    }
    
    int main() {
        int **matrix = malloc(XMAX * YMAX * sizeof(int) + XMAX * sizeof(int*));
        ...
        if (mat(matrix, XMAX, YMAX) != 0) {
          free(matrix);
          return 1;
        }
        
        mato(matrix, XMAX, YMAX);
        ...
    }


    В коде с тремя звёздочками конкретно здесь:
    mat(&matrix[0][0], XMAX, YMAX)
    передаётся неправильный указатель, потому что matrix --- это не настоящий двумерный массив, и matrix и &matrix[0][0] указывают в разные места.

    Ну и порекламирую свой давнишний обзорный ответ на подобный вопрос.
    Ответ написан
    3 комментария
  • Где в Москве можно получить практические навыки технической организации работы отдела разработки (приоритет на PHP)?

    @Elizavetta
    Matroid: gamedev/js-разработка
    По вопросу непонятно, какой у Вас опыт в разработке. Если для вас все это абстрактные пункты, которые нужно сделать, курсы могут не помочь, доверьтесь главному разработчику. Если же нет - пощупайте все своими руками.
    Организация код ревью зависит от уровня людей. Автоматические тесты - вообще обширная тема, под которую можно еще отдел выделить, инструменты и подходы очень обширны.
    С такими строгими настройками, как полный код стайл, автотесты и ревью, вам нужно в первую очередь позаботиться о распределении времени разработчиками. Если тесты будут писать тоже они, и ревьюить тоже они (каждый коммит), на функционал останется ~20% времени.
    Ответ написан
    2 комментария