erreur non comprise - C - Programmation
Marsh Posté le 19-10-2013 à 11:27:17
Bonjour
Tout d'abord, vous avez dit que la fonction copie retourne un int et non int*, donc vous ne pouvez pas écrire ensuite :
Code :
|
pour corriger cet erreur, vous avez deux choix, soit :
en retournant un pointeur vers int il faut être prudent quand même pour ne pas tomber dans le cas où vous retournez une adresse locale qui n'est plus "utilisable" !
Sinon, la façon la plus simple de faire c'est d'utiliser la fonction memcpy comme ceci :
Code :
|
Marsh Posté le 20-10-2013 à 10:10:30
Bonjour,
les syntaxes *(tab+k) sont à proscrire car inutilement "obfuscatrice" : la syntaxe tab[k] est bien plus lisible...
Marsh Posté le 20-10-2013 à 21:17:38
lavela a écrit :
|
Bonjour
Ta fonction "copie" est prévue pour renvoyer un int or elle renvoie "t" qui est un "int étoile". D'ailleurs tu le dis toi-même, tu renvoies le "talbeau". Or un "talbeau" ce n'est pas un int mais une adresse. Dommage que tu aies mis des commentaires sans ensuite en tenir compte...
Sinon pour la remarque de dreameddeath c'est exact. Il n'y a absolument aucun avantage à écrire *(t+x) au lieu de t[x]. Je pense que t'as essayé de mettre en application une règle qui dit que passer par un pointeur c'est plus rapide que déréférencer un "talbeau" ; ce qui est vrai à condition alors de passer par un pointeur et non par un calcul
Exemple
Code :
|
Est-ce que tu vois la différence ? Je m'adresse à des pointeurs qui ont la bonne adresse et non à des adresses que je dois calculer à chaque itération...
snack3r a écrit : |
Là ça va puisque c'est une adresse allouée. Simplement l'appelant devra prendre soin, lui, de libérer l'allocation une fois qu'il n'en a plus besoin...
snack3r a écrit : Sinon, la façon la plus simple de faire c'est d'utiliser la fonction memcpy comme ceci : |
Je pense qu'il veut s'exercer pour apprendre et comprendre et non passer par un outil déjà tout fait...
Marsh Posté le 19-10-2013 à 10:04:07
Bonjour, je suis débutant en C, et j'ai voulu crée un programme qui fait une copie d'un tableau d'entier de taille N vers un autre, pour cela , j'ai crée 4 fonctions: fonction.h fonction.c le Makefile et main.c , dont les voici .Mais ,à chaque fois que je compile, le compilateur m'affiche :
Pour le Makefile
Pour la fonction :"fonction.h"
Pour la fonction :"fonction.c"
Et quand je compile( sous geany, avant de de le "make" ), il m'affiche cet avertissement:
C'est quand je le caste en int (j'ai pas compris le pourquoi!!) que l'erreur disparait!
Idem pour la fonction main.c :
le compilateur me dit:
Je n'arrive pas à voir d'où provient mon erreur!!
---------------
Mohamed ABDEREMANE