Question programmation en C

Résolu/Fermé
Carbon202 Messages postés 4 Date d'inscription vendredi 6 janvier 2012 Statut Membre Dernière intervention 7 janvier 2012 - Modifié par Carbon202 le 7/01/2012 à 22:24
Carbon202 Messages postés 4 Date d'inscription vendredi 6 janvier 2012 Statut Membre Dernière intervention 7 janvier 2012 - 7 janv. 2012 à 23:25
Bonjour,
alors voilà, je débute en programmation, et j'ai décidé de commencer a programmer en C il y a quelques jours, et j'ai une petite question : est-il possible dans une même fonction ET de modifier une variable d'une autre fonction déjà existante grâce à un pointeur ET de renvoyé une nouvelle valeur obtenue grâce à ma fonction en utilisant return? Ou dois-je utiliser un deuxième pointeur pour modifier une variable que je créerais dans ma fonction main ?
Merci d'avance pour vos réponses :D


A voir également:

4 réponses

Pacorabanix Messages postés 3248 Date d'inscription jeudi 23 août 2007 Statut Membre Dernière intervention 19 mai 2013 661
7 janv. 2012 à 22:28
oui, c'est possible

peu de choses sont impossibles en C.



mais tu n'as qu'à faire l'essai toi-même, c'est un bon entrainement de codage.

quelques lignes de code et tu auras ta réponse ;)
1
Carbon202 Messages postés 4 Date d'inscription vendredi 6 janvier 2012 Statut Membre Dernière intervention 7 janvier 2012
7 janv. 2012 à 22:33
Ben merci, :p Bonne soirée !
0
Pacorabanix Messages postés 3248 Date d'inscription jeudi 23 août 2007 Statut Membre Dernière intervention 19 mai 2013 661
Modifié par Pacorabanix le 7/01/2012 à 22:35
une petite précision tout de même.

Tu dis :

"de modifier une variable d'une autre fonction déjà existante"

disons que la fonction qui modifie s'appelle modif() et la fonction deja existante s'appelle exist() (avec des paramètres, mais là je m'en fiche)

si ton main() ressemble à ça :

int main() {  
  exist()  
  modif()  
}


il faut que tu comprennes qu'il n'y aura pas de variable de la fonction exist() en mémoire.

je ne sais pas comment tu pourrais te débrouiller, mais si tu arrives à faire un pointeur sur une variable de exist(), et que tu essayes d'utiliser ce pointeur dans modif(), tu auras un crash de ton programme.

ce que tu dis ne serait possible que si la fonction exist() appelle dans son corps la fonction modif() : ainsi les variables de la fonction exist() sont encore en mémoire car elle n'est pas terminée.

int main() {  
  exist()  
} 

void exist() { 
  modif() 
} 
0
Pacorabanix Messages postés 3248 Date d'inscription jeudi 23 août 2007 Statut Membre Dernière intervention 19 mai 2013 661
7 janv. 2012 à 22:36
pour que des variables survivent après la fin d'une fonction, il faut allouer leur mémoire *dynamiquement* (avec malloc), mais je ne pense pas que tu as vu ça déjà.
0
Carbon202 Messages postés 4 Date d'inscription vendredi 6 janvier 2012 Statut Membre Dernière intervention 7 janvier 2012
7 janv. 2012 à 22:52
Ma fonction déjà existant appelle ma fonction "modificatrice" puis que c'est ma fonction main qui appelle une autre fonction, j'aurais peut être du le préciser ! Et en effet je n'ai pas encore vu les allocations de mémoire dynamique ! MDR
0
Carbon202 Messages postés 4 Date d'inscription vendredi 6 janvier 2012 Statut Membre Dernière intervention 7 janvier 2012
Modifié par Carbon202 le 7/01/2012 à 23:25
Finalement j'ai fais ça autrement j'ai tout inclus dans ma fonction modificatrice !
0