begin process at 2012 05 30 05:12:12
  Trouver un code source :
 
dans
 
Accueil > Forum > 

C

 > 

Divers

 > 

Débutant(e)

 > 

Les variables...


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

Les variables...

lundi 14 décembre 2009 à 18:58:28 | Les variables...

lordfinalff


Bonjour a tous et a toutes !
Voila la situation, j'ai commencé à apprendre le C pour programmer un PIC.
A la base, les cours nous faisait utiliser FlowCode, mais, ce dernier ne prennant pas en compte les tableaux multidimentionnels de variables, j'ai du me mettre au C ^^

Bon, un truc me chiffonne... J'ai abordé les pointeurs... Fameux pointeurs.. Je comprends le principe, je comprends le fonctionnement mais, sachant qu'en C ( comme en VB dans lequel je programme d'habitude ) il y a possibilité de déclarer nos variables en globale pour tout le fichier...
Or, dans le tutoriel que j'ai suivi, il déconseillait de le faire, et plutôt se servir des pointeurs pour manipuler des variable entre 2 fonctions...
Pourquoi donc ?
Je suppose qu'il doit y avoir une réel utilité sinon, on déclarerai simplement les variable en local, avant le main et ainsi, pas besoin de pointeurs pour les manipuler...

Je remercie ceux qui pourront répondre à cette question..

Lordfinalff.. bien embété par ces pointeurs...
lundi 14 décembre 2009 à 20:35:16 | Re : Les variables...

CptPingu

Administrateur CodeS-SourceS
Une variable globale, étant accessible partout, est fortement déconseillée (que ce soit en C, en VB ou autre d'ailleurs). C'est le meilleur moyen de produire du code spaghetti.

Le problème avec une variable globale, c'est que ça rend le code très difficile à maintenir. En appelant une fonction, tu ne sais pas si celle-ci va modifier ta variable globale ou non, et dans quelle mesure. C'est très bancale de s'appuyer là-dessus.
Comme toute fonctionnalité d'un langage, une fonctionnalité est là pour être utilisé, mais certaines sont à manipuler avec grande parcimonie.

Les pointeurs ne sont pas là pour émuler des variables globales, c'est un tout autre mécanisme. On peut très bien créer un code sans pointeur ni variable globale.

Dans le contexte dont tu parles, les pointeurs sont essentiellement utilisés pour éviter des copies inutiles, et être sur que l'on agit sur les variables passées en argument.

Petit exemple très simple:
Code C/C++ :
#include <stdio.h>

void swap(int* a, int* b)
{
  int tmp = *a;
  *a = *b;
  *b = tmp;
}

int main(void)
{
  int var1 = 45;
  int var2 = 97;

  printf("%i %i\n", var1, var2);
  swap(&var1, &var2);
  printf("%i %i\n", var1, var2);

  return 0;
}


Si tu penses ne pas être assez à l'aise avec les pointeurs, voici un petit cours:
http://0217021.free.fr/Cours/pointeurs.pdf
mardi 15 décembre 2009 à 00:05:30 | Re : Les variables...

uaip

Réponse acceptée !
Salut,
Hum, CptPingu a très bien résumé. N'oublie pas le "réponse acceptée" si tu as compris, ça évite aux autres utilisateurs de "perdre du temps" pour rien en lisant un topic déjà résolu.

Juste une petite précision au cas ou :
en C, pour modifier un paramètre (paramètre de sortie ou d'entrée/sortie), un passage par adresse (pointeur) est obligatoire, comme le montre l'exemple de CptPingu.
De plus, si tu as par exemple une structure, de 40octets, la passer en paramètre d'une fonction reviendrait à copier 40 octets dans une variable temporaire. Or passer son adresse revient à copier 4 octets seulement. Gain de rapidité, gain de mémoire.


Cordialement, uaip.


Cette discussion est classée dans : variables, variable, manipuler, pointeurs, comprends


Répondre à ce message

Sujets en rapport avec ce message

Association de variable au contrôle [ par Fantoooom ] Salut,Je suis débutant en langage C++. J'utilise Visual C++. En utilisant AppWizard, je mets en place mes bouton, zone de saisie, etc. Je leur donne à Les Variables Dans VC6.0 [ par Funcky ] j'ai un prog fait avec le mfc app wizard de VC6.0, il contient une editbox, a laquelle j'attribue une variable par classwizard, mais je ne me rappele Variables "partagées" [ par sebastienbro ] Bonjour, je voudrais savoir comment partager une variable entre plusieur fichier .cpp. J'ai essayé avec un .h, dans lequel j'ai mis juste ma variable. comment perdre une variable... [ par ganfoud ] J'ai toujours des problemes de variables baladeuses:j'affecte des valeurs à des variables et ces valeurs changent sans que je fasse aucune affectation tableau de pointeurs de fonctions [ par trapic ] Bonjour,     J'aimerais réaliser une procédure appelant une liste de fonctions variables à argument variables. Exemple: //Le tableau des fonctions e Variables, je comprends rien! [ par StevenJLMunn ] J`ecris avec un clavier americain donc je ne peut pas ecrire avec les acents.Je fais un prog pour les codes serie (je pense ke tout le monde siat ce k DLL et variables [ par CyberP ] Voilà je voudrais donner la possibilitée à une dll d'appeler une fonction de l'application mèreDonc j'ai créé une structure que j'appelle PLUGINSYNC ( utilisation dynamique de plusieurs variables [ par TGTG ] Bonjour,Voilà, je crée une fonction "accreg(int num)" qui me permet d'affecter à la variable activereg la valeur de la variable tstregnum, (où num est C++ noms de variable variables [ par Ajent J ] Est ce qu'il est possible de construire un nom de variable par concatenation comme en PHP ? for(int j=0;j<10;i++) { ${"mavariable".$i} = rand( Les variables globales...... [ par netman ] Bon la j'ai un petit probleme (normal sinon je poserais pas de question ....)Bon je fait un petit programme et la je suis confronte a un pb .....J'uti


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,156 sec (3)

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