Вопросы по языку СИ - страница 9

 
Кеша Рутов:

В mine_score *m - УКАЗАТЕЛЬ на int, и в коменте сказано что это массив, то есть для каждой строки разное количество столбцов, это называется "гребневый масив" не прямоугольный.

Тут просто для этого массива длин строк выделяется память, значений нет

Для самой матрицы М 

тут выделяется память для указателей строк

а тут для столбцов

ага, придется наверное структуру оставить, что бы потом не запутаться

хотел просто матрицей заменить

 
Maxim Dmitrievsky:

ага, придется наверное структуру оставить, что бы потом не запутаться

хотел просто матрицей заменить

Именно так, чтобы не запутаться, было время раньше я тоже отрицал enum-ы, лишние структуры и тп. всё без чего можно обойтись, а потом посмотришь в этот код через пару месяцев и проще переписать с нуля, про других зрителей я вообще молчу, можно здорово опозориться. Кроме того в сях и плюсах стандартные массивы при присвоении и передачи в функцию становятся ссылками, нет возможности выяснить размер и структуры во многих случаях необходимость, про динамические оно и так понятно, это даже не массив а просто кусок памяти в виде указателя на первый элемент.

 
 if (param->est == EST_MIC_APPROX)
        ret = OptimizeXAxis(xx, yx, prob->n, Q_map, q, P_map, p, score->m[i]+1,
                            score->M[i]);

Вот тут я и попал, когда ранее объявленный 2-мерный массив М (double **M; /* the (equi)characteristic matrix */), но этой ф-ии передается только одна "гребневая" строка М[i].. а на мкл уже через матрицы сделал. И долго матерюсь теперь.

но может проблема надуманная

 
Мне нравится научнотехнически рэп про Си https://www.youtube.com/watch?v=cdX8r3ZSzN4
 

***

 
Konstantin Nikitin:

bazhenovivansergeevich вам в Фриланс

ещё немного и ему в бан :-)

если добрый модератор не сотрёт прежнее

 
Maxim Kuznetsov:

ещё немного и ему в бан :-)

если добрый модератор не сотрёт прежнее

Ну иногда и банька помогает привести мысли в порядок

 

что возвращает в итоге такая конструкция:

typedef struct TF_Status TF_Status;
TF_Status* TF_NewStatus();

посмотрел размер TF_Status - если компиляция 32 бит, то 4 байта, если 64-бит, то 8 байт

но по сути никак не пойму, что вернет  TF_NewStatus()   ?

 
Igor Makanu:

что возвращает в итоге такая конструкция:

посмотрел размер TF_Status - если компиляция 32 бит, то 4 байта, если 64-бит, то 8 байт

но по сути никак не пойму, что вернет  TF_NewStatus()   ?

Если нормально написать, то указатель на структуру вернет.