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 :

Tableaux à deux dimensions


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    162
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 162
    Par défaut Tableaux à deux dimensions
    Bonjour,

    Voilà, dans la fonction ci dessous, il y a une vérification afin de savoir si le pointeur est NULL. Voici, le code:


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
     
    /*intialise le tableau*/
    int initSquare(int square_size, int** array)
    {
    	int i=0;
     
    	if(array == NULL)
    	{
    		return 0;
    	}
    	else
    	{
    		/*Allocation de mémoire pour l'array*/
    		array = malloc(sizeof(int) * square_size);
    		for(i = 0; i< square_size; i++)
    		{
    			array[i] = malloc(sizeof(int) * square_size);
    		}
     
    		return 1;
    	}
    }
    Par contre, j'obtiens une erreur à la compilation:
    Error null undeclared first use in this function.

    Comment régler ce problème?

    Je vous remercie par avance,

    A+

  2. #2
    Inactif  


    Homme Profil pro
    Doctorant sécurité informatique — Diplômé master Droit/Économie/Gestion
    Inscrit en
    Décembre 2011
    Messages
    9 026
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Doctorant sécurité informatique — Diplômé master Droit/Économie/Gestion
    Secteur : Enseignement

    Informations forums :
    Inscription : Décembre 2011
    Messages : 9 026
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    array = malloc(sizeof(int *) * square_size);
    array est un tableau de pointeur int.
    Même si un (int *) et un (int) on la même taille sur certaines architecture, ce n'est pas toujours le cas.

    Sinon NULL est déclaré dans stdlib.h il me semble ()

  3. #3
    Modérateur
    Avatar de Obsidian
    Homme Profil pro
    Chercheur d'emploi
    Inscrit en
    Septembre 2007
    Messages
    7 483
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Chercheur d'emploi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2007
    Messages : 7 483
    Par défaut
    Citation Envoyé par Neckara Voir le message
    Sinon NULL est déclaré dans stdlib.h il me semble ()
    En fait, et pour être exact, il est défini dans stddef.h.

    Mais les compilateurs le considèrent souvent comme implicite si on ne leur demande pas de faire une compilation stricte et ce fichier est lui-même inclus par la plupart des autres fichiers de headers standards, ce qui fait qu'on finit toujours par en hériter d'une manière ou d'une autre même si on oublie ce fichier.

    Mais c'est bien lui qu'il faut inclure en principe.

  4. #4
    Membre Expert
    Avatar de kwariz
    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Octobre 2011
    Messages
    898
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Chef de projet en SSII
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2011
    Messages : 898
    Par défaut
    Citation Envoyé par Henry22 Voir le message
    Bonjour,

    Voilà, dans la fonction ci dessous, il y a une vérification afin de savoir si le pointeur est NULL. Voici, le code:


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
     
    /*intialise le tableau*/
    int initSquare(int square_size, int** array)
    {
    	int i=0;
     
    	if(array == NULL)
    	{
    		return 0;
    	}
    	else
    	{
    		/*Allocation de mémoire pour l'array*/
    		array = malloc(sizeof(int) * square_size);
    		for(i = 0; i< square_size; i++)
    		{
    			array[i] = malloc(sizeof(int) * square_size);
    		}
     
    		return 1;
    	}
    }
    Par contre, j'obtiens une erreur à la compilation:
    Error null undeclared first use in this function.

    Comment régler ce problème?

    Je vous remercie par avance,

    A+

    Si tu modifies il faut en outre passer un int*** en paramètre sinon au retour de la fonction la paramètre passé n'est pas modifié. Il est plus aisé d'écrire une fonction qui te retourne un int** valide ou NULL en cas d'échec.

  5. #5
    Inactif  


    Homme Profil pro
    Doctorant sécurité informatique — Diplômé master Droit/Économie/Gestion
    Inscrit en
    Décembre 2011
    Messages
    9 026
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Doctorant sécurité informatique — Diplômé master Droit/Économie/Gestion
    Secteur : Enseignement

    Informations forums :
    Inscription : Décembre 2011
    Messages : 9 026
    Par défaut
    Après tes malloc, vérifie toujours que les pointeurs ne sont pas nulls :
    malloc renvoi NULL en cas d'erreur.
    (Et n'oublie pas de faire des printf(); lors des erreurs pour identifier très vite où s'est produite l'erreur dès qu'elle survient)

Discussions similaires

  1. Tableaux à deux dimension : Comprend pas?!
    Par dedesite dans le forum Général Python
    Réponses: 3
    Dernier message: 27/03/2008, 14h10
  2. decalaration dynamique tableaux deux dimensions et TRI
    Par Alex35 dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 27/12/2007, 13h48
  3. [Problème]Tableaux deux dimensions
    Par maloute80 dans le forum Langage
    Réponses: 4
    Dernier message: 14/12/2007, 14h31
  4. [Tableaux] Gerer des tableaux à deux dimensions
    Par FrankOVD dans le forum Langage
    Réponses: 2
    Dernier message: 02/12/2005, 15h20

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