begin process at 2012 05 29 08:07:15
  Trouver un code source :
 
dans
 
Accueil > Forum > 

C

 > 

Divers

 > 

Débutant(e)

 > 

Envoyer un pointeur sur un tableau


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Envoyer un pointeur sur un tableau

mardi 5 octobre 2010 à 11:18:33 | Envoyer un pointeur sur un tableau

xcxl

Bonjour,

J'ai une question sur les pointeurs à vous poser (décidément les pointeurs y'a pas plus complexe...erreur de segmentation à chaque fois)

J'aurais voulu dans le main :

- Créer un pointeur (qui va pointer plus tard sur un tableau)
- L'envoyer à ma fonction "generer_tableau"
- La fonction alloue un tableau de 10 cases et l'associe à mon pointeur
- Pouvoir ensuite afficher les valeurs dans le main

Rien de bien sorcier donc.
Je m'y suis pris comme cela :

Dans le main :
Code C/C++ :
int *tableau = NULL;
int nb_elements = 4;
generer_tableau(tableau, nb_elements);


et dans ma fonction generer_tableau :
Code C/C++ :
void generer_tableau_entiers_aleatoires(int *tab, int nb_elements)
{
	int i=0;

	tab = malloc(nb_elements * sizeof(int));
	if (tab == NULL) // On vérifie si l'allocation a fonctionnée ou pas
        {
		printf("Allocation mémoire refusé, fin du programme\n");
		exit(0); // On arrete le programme
        }
	
	for (i=0 ; i<nb_elements ; i++)
	{
		tab[i] = 1;
	}
}


Le soucis c'est que après dans le main quand je fais un printf("%d", tableau[3]) j'ai une belle erreur de segmentation...

J'ai fais une erreur de syntaxe???

Merci
mardi 5 octobre 2010 à 11:26:54 | Re : Envoyer un pointeur sur un tableau

fregolo52

Membre Club
oui c'est subtilité du passage de paramètre en C avec allocation dans une fonction, si je ne me trompe pas, c'est :
Code C/C++ :
void generer_tableau_entiers_aleatoires(int **tab, int nb_elements)
{
    int i=0;

    *tab = malloc(nb_elements * sizeof(int));
    if (*tab == NULL) // On vérifie si l'allocation a fonctionnée ou pas
        {
        printf("Allocation mémoire refusé, fin du programme\n");
        exit(0); // On arrete le programme
        }
    
    for (i=0 ; i<nb_elements ; i++)
    {
        (*tab)[i] = 1;
    }
}


Code C/C++ :
generer_tableau(&tableau, nb_elements);
mardi 5 octobre 2010 à 11:34:53 | Re : Envoyer un pointeur sur un tableau

xcxl


Merci pour la réponse rapide,

mais segmentation fault aussi, ça foire dès le malloc cette fois-ci...

mardi 5 octobre 2010 à 12:00:37 | Re : Envoyer un pointeur sur un tableau

xcxl

J'ai trouvé une autre solution en fait;

tableau = generer_tableau_entiers_aleatoires(nb_elements);

cette fonction crée le tableau et me renvoie l'adresse du pointeur sur le tableau, et je l'associe à mon pointeur.

La declaration de la fonction ;
int *generer_tableau_entiers_aleatoires(int nb_elements;
et je retourne;
return &pointeurSurTableau

Voila
mardi 5 octobre 2010 à 17:40:53 | Re : Envoyer un pointeur sur un tableau

fregolo52

Membre Club
c'est bizarre, je viens de faire un test chez moi ca marche (sous Windows) sauf que le compilo m'a gueulé dessu sur le malloc, il veut :
*tab = (int *) malloc(nb_elements * sizeof(int));
mais le pb n'est pas là.


Cette discussion est classée dans : int, tableau, nb, elements, pointeur


Répondre à ce message

Sujets en rapport avec ce message

je comprend plus rien(pointeur) [ par bidules ] Bonjour,Pour moi on utilise les pointeur pour creer des tableau dynamiquement.or j'ai reussi a en declarer un avec une taille entrer a l'aide d'une va comment affecter un tableau à un pointeur d'une classe? [ par cesdejong ] Bonjour,je débute un peu en C++ et je suis confronté à un problème pour lequel je ne trouve pas de solution élégante :class truc{...int* abscisse;int* Fonction qui retourne un tableau [ par Kurul1 ] Bonjour à tous   J'ai une classe contenant un tableau a deux dimensions comme variable private  Ce que je voudrais c'est une fonction ayant pour param Taille d'un pointeur ou d'un tableau ( très bizarre ) [ par thristam ] Bonjour à tous,Quand je veux connaitre la taille d'un tableau , je fais :int i[10];coutPas de problème Par contre , si je fais la même chose avec un p Initialisation d'un tableau d'objet [ par Alela ] Bonjour,J'aimerais initialiser ma classe de cette façon :MaClasse *mc= new MaClasse[5](7);avec :class MaClasse {     int nb;     public: Problemes ac les tableau [ par alussk ] ce code doit renvoyer la niemes plus grande valeur d'un tableau d'entier. il ne marche pas donc si vous comprenez pourquoi éclairez moi svp #include Allocation tableau dynamique ds structure [ par chental ] Salut à tous,Sauriez vous me dire comment allouer dynamiquement un tableau dans une structure ?J'arrive à faire l'essentiel mais dans la structure je Convertir un tableau de vecteur de String en pointeur [ par fcoutel ] Bonjour, J'ai cree un tableau dynamique a 2D de type string vector> tab,  je voudrais savoir quel est le meilleur moyen de le convertir en char***.M sequance d alternance paire et impaire ds un tableau [ par Strick9 ] Bonjour à tousvoila je suis débutant et j'aimerai bien connaître la solution de cet énoncé. Soit un tableau d'entier. Une séquence paire est analyseur code pour dépassement mémoire [ par adrienj ] Bonjour à tous,j'utilise Splint pour analyser mon code C et je souhaite que le résultat de l'analyse me dise les failles de gestion mémoire du genre (


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,187 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales