IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C Discussion :

Déclaration d'un tableau à valeurs nulles dans une fonction


Sujet :

C

  1. #1
    Membre éclairé

    Inscrit en
    Juin 2004
    Messages
    1 397
    Détails du profil
    Informations forums :
    Inscription : Juin 2004
    Messages : 1 397
    Points : 763
    Points
    763
    Par défaut Déclaration d'un tableau à valeurs nulles dans une fonction
    Salut !
    Désolé, mais le titre ne me venait pas.
    Dans le cadre d'une fonction de multiplication de matrice, je déclare, au sein de cette fonction, un tableau temporaire initialisé à 0.
    Ca fonctionne, mais quand je regarde le code généré, je vois une réservation dans la pile, puis un appel à un memset...

    Comment faire mieux ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    static inline void matrix_tr(int *A, int *B, int *res)
    <div style="margin-left:40px">int temp[64]={0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0};</div>...}
    Aucune réponse à une question technique par MP.
    Ce qui vous pose problème peut poser problème à un(e) autre

    http://thebrutace.labrute.fr

  2. #2
    Membre averti Avatar de Jack_serious
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    350
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Septembre 2005
    Messages : 350
    Points : 396
    Points
    396
    Par défaut
    Citation Envoyé par progfou
    Ca fonctionne, mais quand je regarde le code généré, je vois une réservation dans la pile, puis un appel à un memset...

    Comment faire mieux ?
    reservation dans la pile => Allocation de memoire, memset => mise a 0.

    Tu voudrais quoi de mieux ?
    Je vois mal plus rapide...
    Don't worry, be serious.
    La vie est courte. Prenez votre temps.

    Jack.

  3. #3
    Membre confirmé Avatar de Mayti4
    Inscrit en
    Février 2004
    Messages
    442
    Détails du profil
    Informations forums :
    Inscription : Février 2004
    Messages : 442
    Points : 488
    Points
    488
    Par défaut
    int temp[64]={0,0,0,0, ... };
    Et si c'était un tableau de 2048 éléments, tu aurais fait pareil ?

    Ils seront tous mis à zéro.

    Comment faire mieux ?
    Tu peux utiliser une boucle for.
    L'itération est humaine; la récursion, divine.

  4. #4
    Expert éminent sénior
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 67
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Points : 20 985
    Points
    20 985
    Par défaut
    Citation Envoyé par progfou
    Dans le cadre d'une fonction de multiplication de matrice, je déclare, au sein de cette fonction, un tableau temporaire initialisé à 0.
    Ca fonctionne, mais quand je regarde le code généré, je vois une réservation dans la pile, puis un appel à un memset...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    static inline void matrix_tr(int *A, int *B, int *res)
    int temp[64]={0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0};
    ...}
    Une façon compliquée d'écrire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    static inline void matrix_tr(int *A, int *B, int *res)
    int temp[64]={0};
    ...}
    Définit 'mieux', parce que je ne vois pas.
    Pas de Wi-Fi à la maison : CPL

  5. #5
    Expert éminent sénior
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 67
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Points : 20 985
    Points
    20 985
    Par défaut
    Citation Envoyé par Mayti4
    Tu peux utiliser une boucle for.
    Ca, c'est 'différent', mais pas forcément 'mieux'...
    Pas de Wi-Fi à la maison : CPL

  6. #6
    Membre éclairé

    Inscrit en
    Juin 2004
    Messages
    1 397
    Détails du profil
    Informations forums :
    Inscription : Juin 2004
    Messages : 1 397
    Points : 763
    Points
    763
    Par défaut
    J'ai pensé à l aboucle for, mais je ne savais pas ce qui était le plus efficace.
    Pour la déclaration, je croyais qu'on ne pouvait pas écrire .
    Une ancienne phrase d'un ancien prof, qui me disait de ne pas le faire...

    Enfin, si vous me dites que je peux, je préfère !
    Aucune réponse à une question technique par MP.
    Ce qui vous pose problème peut poser problème à un(e) autre

    http://thebrutace.labrute.fr

  7. #7
    Expert éminent sénior
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 67
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Points : 20 985
    Points
    20 985
    Par défaut
    Citation Envoyé par progfou
    Pour la déclaration, je croyais qu'on ne pouvait pas écrire .
    Une ancienne phrase d'un ancien prof, qui me disait de ne pas le faire...

    Enfin, si vous me dites que je peux, je préfère !
    C'est pas moi qui le dit. C'est la norme qui définit le langage C. Si tu en doutes :

    http://emmanuel-delahaye.developpez.com/notes.htm#norme

    Bon courage.
    Pas de Wi-Fi à la maison : CPL

  8. #8
    Membre éclairé

    Inscrit en
    Juin 2004
    Messages
    1 397
    Détails du profil
    Informations forums :
    Inscription : Juin 2004
    Messages : 1 397
    Points : 763
    Points
    763
    Par défaut
    Merci à tous
    Aucune réponse à une question technique par MP.
    Ce qui vous pose problème peut poser problème à un(e) autre

    http://thebrutace.labrute.fr

  9. #9
    Membre éclairé

    Inscrit en
    Juin 2004
    Messages
    1 397
    Détails du profil
    Informations forums :
    Inscription : Juin 2004
    Messages : 1 397
    Points : 763
    Points
    763
    Par défaut
    En fait, j'ai une question similaire.
    Dans le cas d'un tableau à 2 dimensions, je ne peux plus faire ça :
    Si ?
    Aucune réponse à une question technique par MP.
    Ce qui vous pose problème peut poser problème à un(e) autre

    http://thebrutace.labrute.fr

  10. #10
    Expert éminent sénior
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 67
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Points : 20 985
    Points
    20 985
    Par défaut
    Citation Envoyé par progfou
    En fait, j'ai une question similaire.
    Dans le cas d'un tableau à 2 dimensions, je ne peux plus faire ça :
    Si ?
    Si (avec le ';'). Mais en théorie il faut faire :
    Pas de Wi-Fi à la maison : CPL

  11. #11
    Membre régulier

    Inscrit en
    Avril 2004
    Messages
    78
    Détails du profil
    Informations forums :
    Inscription : Avril 2004
    Messages : 78
    Points : 74
    Points
    74
    Par défaut
    .... et un calloc ca serait pas ideal par hasard ?

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 2
    Dernier message: 05/01/2015, 14h39
  2. remplacer les valeurs nulles dans une table
    Par jessy212 dans le forum Access
    Réponses: 4
    Dernier message: 28/08/2006, 13h22
  3. clés et valeurs à null dans une HashMap typée
    Par Djakisback dans le forum API standards et tierces
    Réponses: 4
    Dernier message: 06/06/2006, 13h04
  4. Comment gérer les valeur Nulles dans une requête ?
    Par sondo dans le forum Bases de données
    Réponses: 3
    Dernier message: 16/03/2005, 11h02
  5. Affcecter une valeur NULL dans une requete paramétrée
    Par thiouwz2 dans le forum Bases de données
    Réponses: 7
    Dernier message: 05/11/2004, 15h02

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo