Forum Programmation.c Pointeur au lieu de tableau dans une structure.

Posté par  (site web personnel) .
Étiquettes : aucune
-1
30
avr.
2010
En C, on peut écrire ceci :

double f[10];
double *p;
p=f;
p[1]=98.7;
f[1]=98.76;

J'essaie de trouver un moyen, si c'est possible de faire la même chose pour remplacer un tableau par un pointeur sur un tableau pour éviter des copies. Le top du top serait d'éviter de devoir modifier le code utilisant ses structures.

struct org
{
int dummy;
double Matrix[10][10];
};

struct New
{
double (* mtx)[10][10];
int plip;
};

main(){
struct org o;
struct New new;

new.mtx=&(o.Matrix);

o.Matrix[1][0]=1234.5;
(*new.mtx)[1][0]=5.4321;
}

L'ajout de '*' me gène, il faut retoucher le code.
  • # Comme ça je dirais...

    Posté par  . Évalué à 3.

    ... que ça devrait marcher avec une structure du style

    struct New
    {
    double (* mtx)[10];
    int plip;
    };



    Mais je n'ai pas de compilateur C sous la main pour tester.
  • # utiliser un tableau de pointeurs

    Posté par  . Évalué à 4.

    Je propose:


    struct org
    {
    int dummy;
    double Matrix[10][10];
    };

    struct New
    {
    double ** mtx;
    };

    main(){
    struct org o;
    struct New new;

    new.mtx = malloc(10 * sizeof(double*));
    for (i = 0; i < 10; i++) new.mtx[i] = Matrix[i];


    Et du coup tu peux faire

    o.Matrix[1][0]=1234.5;
    new.mtx[1][0]=5.4321;
    free(new.mtx);

Suivre le flux des commentaires

Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.