Question programmation en C

Résolu
Carbon202 Messages postés 4 Date d'inscription   Statut Membre Dernière intervention   -  
Carbon202 Messages postés 4 Date d'inscription   Statut Membre Dernière intervention   -
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   Statut Membre Dernière intervention   663
 
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   Statut Membre Dernière intervention  
 
Ben merci, :p Bonne soirée !
0
Pacorabanix Messages postés 3248 Date d'inscription   Statut Membre Dernière intervention   663
 
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   Statut Membre Dernière intervention   663
 
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   Statut Membre Dernière intervention  
 
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   Statut Membre Dernière intervention  
 
Finalement j'ai fais ça autrement j'ai tout inclus dans ma fonction modificatrice !
0