Questions sur la langue SI - page 9

 
Кеша Рутов:

Dansmine_score*m est un pointeur sur int, et le commentaire dit qu'il s'agit d'un tableau, c'est-à-dire que pour chaque ligne un nombre différent de colonnes, cela s'appelle un "tableau en peigne" et non un tableau rectangulaire.

Il alloue simplement de la mémoire pour ce tableau de longueurs de lignes, sans aucune valeur.

Pour la matrice M elle-même.

ici est allouée la mémoire pour les pointeurs des lignes

et ici pour les colonnes

Oui, je vais probablement devoir laisser la structure en place pour qu'il n'y ait pas de confusion plus tard.

J'allais juste le remplacer par une matrice.

 
Maxim Dmitrievsky:

Oui, nous devrons probablement garder la structure pour ne pas être confus plus tard.

Je voulais juste le remplacer par une matrice.

Exactement, pour ne pas être confus, il fut un temps où je refusais aussi les enum's, les structures supplémentaires et ainsi de suite, tout ce dont vous pouvez vous passer, et puis vous regardez ce code après quelques mois et il est plus facile de le réécrire à partir de zéro, sans parler des autres spectateurs, vous pouvez être vraiment embarrassé. De plus, dans sys et pluses, les tableaux standards, lorsqu'ils sont assignés et passés à une fonction, deviennent des références, il n'y a aucun moyen de connaître la taille et la structure dans de nombreux cas, c'est déjà clair pour les tableaux dynamiques, ce n'est même pas un tableau mais juste un morceau de mémoire sous la forme d'un pointeur vers le premier élément.

 
 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]);

C'est là que je me suis retrouvé, alors que j'avais précédemment déclaré un tableau à 2 dimensions M(double **M ; /* la matrice (équi)caractéristique */), mais ce f-i ne passait qu'une seule chaîne "peigne" M[i]... et sur µl déjà fait à travers les matrices. Et maintenant je jure pour un long moment.

Mais peut-être que le problème est tiré par les cheveux.

 
J'aime le rap des sciences et de la technologie sur Chttps://www.youtube.com/watch?v=cdX8r3ZSzN4
 

***

 
Konstantin Nikitin:

bazhenovivansergeevich à Freelance

un peu plus et il est banni :-)

si un modérateur gentil n'efface pas le précédent.

 
Maxim Kuznetsov:

Un peu plus et il est banni :-)

si un gentil modérateur n'efface pas l'ancienne.

Eh bien, parfois un banya peut aider à se vider la tête.

 

ce que cette construction rend à la fin :

typedef struct TF_Status TF_Status;
TF_Status* TF_NewStatus();

J'ai regardé la taille deTF_Status - si la compilation est en 32 bits, elle fait 4 octets, si elle est en 64 bits, elle fait 8 octets.

Je n'arrive pas à comprendre ce que retourneTF_NewStatus() ?

 
Igor Makanu:

ce que cette construction rend à la fin :

J'ai regardé la taille deTF_Status - si la compilation est en 32 bits, elle fait 4 octets, si elle est en 64 bits, elle fait 8 octets.

Je n'arrive pas à comprendre ce que retourneTF_NewStatus() ?

Si vous l'écrivez correctement, elle renverra le pointeur vers la structure.