Forum d'entraide en sciences
Bienvenue sur le forum d'entraide en sciences ! Inscrivez-vous gratuitement pour accéder à l'intégralité du forum ou connectez-vous si c'est déjà fait !

Bonne visite !

Rejoignez le forum, c'est rapide et facile

Forum d'entraide en sciences
Bienvenue sur le forum d'entraide en sciences ! Inscrivez-vous gratuitement pour accéder à l'intégralité du forum ou connectez-vous si c'est déjà fait !

Bonne visite !
Forum d'entraide en sciences
Vous souhaitez réagir à ce message ? Créez un compte en quelques clics ou connectez-vous pour continuer.
Le deal à ne pas rater :
Funko POP! Jumbo One Piece Kaido Dragon Form : où l’acheter ?
Voir le deal

[c++]Posez vos questions...

4 participants

Aller en bas

[c++]Posez vos questions... Empty [c++]Posez vos questions...

Message par Duche Mer 11 Oct 2006 - 16:52

Bon ben posez moi toutes les questions qui vous posent problème en c++ et je tenterai d'y répondre Very Happy
Duche
Duche
Modérateur
Modérateur

Masculin Nombre de messages : 2210
Age : 39
Localisation : Louvain-la-Neuve (Belgique)
Profession / Etudes : Développeur en optimisation
Points : 8265
Date d'inscription : 16/01/2006

Revenir en haut Aller en bas

[c++]Posez vos questions... Empty Re: [c++]Posez vos questions...

Message par Julien Mar 2 Oct 2007 - 14:39

Bon allez, je commence :

Y a-t-il une différence entre variable définie et variable déclarée ?
Julien
Julien
Administrateur
Administrateur

Masculin Nombre de messages : 12291
Age : 37
Localisation : Clermont-Ferrand
Profession / Etudes : Ingénieur
Points : 22499
Date d'inscription : 10/03/2005

Revenir en haut Aller en bas

[c++]Posez vos questions... Empty Re: [c++]Posez vos questions...

Message par payne Mar 2 Oct 2007 - 23:44

Huh...
J'aimerais bien avoir un cour bien simple des bases du C++...
À ce qu'il parraît, il va falloir connaître ce language pour pouvoir faire du map making avec Starcraft II!
payne
payne
Membre
Membre

Masculin Nombre de messages : 1783
Age : 32
Localisation : Montréal, Québec, Canada
Profession / Etudes : Étudiant
Points : 6764
Date d'inscription : 09/06/2006

https://etudiant-scientific.forumactif.com/

Revenir en haut Aller en bas

[c++]Posez vos questions... Empty Re: [c++]Posez vos questions...

Message par minidiane Mer 3 Oct 2007 - 6:19

J'ai rien compris aux pointeurs, j'aimerai bien des explications dessus stp
minidiane
minidiane
Membre
Membre

Féminin Nombre de messages : 128
Age : 37
Localisation : Mulhouse
Profession / Etudes : Etudiante
Points : 6204
Date d'inscription : 13/06/2007

Revenir en haut Aller en bas

[c++]Posez vos questions... Empty Re: [c++]Posez vos questions...

Message par Julien Mer 3 Oct 2007 - 7:29

minidiane a écrit:J'ai rien compris aux pointeurs, j'aimerai bien des explications dessus stp
J'ai eu cours sur les pointeurs lundi mais comme je n'y étais pas... je ne vais pas pouvoir t'expliquer ! Faudra quand-même que j'y regarde de plus près.
Julien
Julien
Administrateur
Administrateur

Masculin Nombre de messages : 12291
Age : 37
Localisation : Clermont-Ferrand
Profession / Etudes : Ingénieur
Points : 22499
Date d'inscription : 10/03/2005

Revenir en haut Aller en bas

[c++]Posez vos questions... Empty Re: [c++]Posez vos questions...

Message par Julien Mer 3 Oct 2007 - 7:30

payne a écrit:J'aimerais bien avoir un cour bien simple des bases du C++...
Tu connais quelques petits trucs ou rien du tout ?

Il faut commencer par le programme Hello World !
Julien
Julien
Administrateur
Administrateur

Masculin Nombre de messages : 12291
Age : 37
Localisation : Clermont-Ferrand
Profession / Etudes : Ingénieur
Points : 22499
Date d'inscription : 10/03/2005

Revenir en haut Aller en bas

[c++]Posez vos questions... Empty Re: [c++]Posez vos questions...

Message par Duche Mer 3 Oct 2007 - 11:35

Julien a écrit:Bon allez, je commence :

Y a-t-il une différence entre variable définie et variable déclarée ?

Qu'est-ce que tu entends par variable définie ?
Duche
Duche
Modérateur
Modérateur

Masculin Nombre de messages : 2210
Age : 39
Localisation : Louvain-la-Neuve (Belgique)
Profession / Etudes : Développeur en optimisation
Points : 8265
Date d'inscription : 16/01/2006

Revenir en haut Aller en bas

[c++]Posez vos questions... Empty Re: [c++]Posez vos questions...

Message par Duche Mer 3 Oct 2007 - 11:36

J'ai au programme de faire un petit tuto c++ mais ca risque de prendre du temps, j'ai baucoup de choses à faire...

Je ferai un petit truc sur les pointeurs cet aprem
Duche
Duche
Modérateur
Modérateur

Masculin Nombre de messages : 2210
Age : 39
Localisation : Louvain-la-Neuve (Belgique)
Profession / Etudes : Développeur en optimisation
Points : 8265
Date d'inscription : 16/01/2006

Revenir en haut Aller en bas

[c++]Posez vos questions... Empty Re: [c++]Posez vos questions...

Message par Julien Ven 5 Oct 2007 - 9:39

le_duche a écrit:Je ferai un petit truc sur les pointeurs cet aprem
C'est cool, merci.

Pour variable définie, justement, je ne sais pas quelle est la différence avec variable déclarée. Apparemment il y en a une, mais je ne sais pas à quel niveau.
Julien
Julien
Administrateur
Administrateur

Masculin Nombre de messages : 12291
Age : 37
Localisation : Clermont-Ferrand
Profession / Etudes : Ingénieur
Points : 22499
Date d'inscription : 10/03/2005

Revenir en haut Aller en bas

[c++]Posez vos questions... Empty Re: [c++]Posez vos questions...

Message par Duche Ven 5 Oct 2007 - 13:15

Bon, c'est un peu plus tard que "cet aprèm" mais c'est là.
(notez qu'on est quand même cet aprèm Laughing )

Alors la première question c'est bien sur de savoir ce que c'est qu'un pointeur !
- C'est un truc qui pointe une variable !
- NON ! NON ! et NON !
Ca c'est la version intuitive, c'est l'idée schématique que l'on peut se faire d'un pointeur. c'est très bien pour concevoir les algorithmes, mais pour bien savoir les utiliser, il faut savoir ce que c'est.

Avant tout, il faut savoir comment fonctionne la mémoire d'une ordinateur.

Vous avez peut-être déjà entendu parler de mémoire vive, de mémoire flash, de disque dur, de barette de RAM, etc... Je ne vais pas détailler, mais sachez qu'il y a deux zones mémoire utilisées par votre ordinateur et qui ne fonctionnent pas tout à fait pareil.
La première, c'est votre disque dur. Que l'ordinateur soit allumé ou éteint, il contient un certain nombre de données qu'il trie à sa façons, auquel l'unité centrale de l'ordinateur (le processeur) peut faire des requêtes pour obtenir des informations. Particularité du disque dur, quand vous l'éteingez, il conserve ses données. Autre particularité, il est très très très lent ! (Quand un jeu se met à lagguer par exemple, ou lorsqu'un de vos programme est un peu trop envahissant et rend tout super lent; c'est que l'ordinateur a eu besoin de plus de mémoire que prévu, et est allé faire ses calculs sur le disque dur plutôt que sur la RAM (que je vais présenter après); vous voyez bien la différence de vitesse.)
La seconde zone mémoire c'est la RAM (pour Random Acces Memory, c'est à dire "Accès mémoire aléatoire"). Imaginons que vous avez une barette de RAM de 512Mo (assez classique), cela signifie que vous avez dans votre ordinateur (pas très loin du processeur) une sorte de looong ruban de 536870912 cases côte à côte numérotées de 0 à 536870911 dans chacune desquelles se trouve codé un nombre entier de 8 bits (c'est à dire codé avec 8 caractère 0-1).
La particularité de cette barette est que l'ordinateur peut avoir accès directement à n'importe laquelle de ces cases en un temps très bref, c'est à dire qu'il n'y a pas de procédé mécanique de lecture de la case comme dans le disque dur, mais un accès direct par courant électrique. C'est de là que viens le "Random Acces". Chacun des numéros associés à chacune des cases est appelé "adresse".

Une autre chose à savoir est ce qu'est une VARIABLE. Quand vous déclarez un int, un long, un float, ou plus complexe un string, ce sont des variables fictives. Que vous l'appeliez a,b,c ou JeanEdourardDeSaxCobourgGotta l'ordinateur la traitera exactement de la même façon. Ce qui compte c'est ce qui se passe en réalité.
Prenons par exemple une variable char. C'est une variable qui peut contenir 256 = 2^8 valeurs possibles. Elle a donc besoin de 8 bit pour être encodée, c'est à dire une case de la RAM (une case équivaut à un octet). Quand vous déclarez un char, l'ordinateur réserve une place d'une case dans la RAM pour votre variable, et en retient l'adresse. (vous vous retenez le nom, l'ordinateur retient l'adresse. c'est important).
Prenons un autre exemple avec une variable de type long (un entier plus grand que int). elle peut prendre exactement 4294967296 = 2^32 valeurs différentes, ce qui signifie qu'elle a besoin de 32 bits pour être encodée dans la RAM, c'est à dire 4 octets (ou 4 cases). Quand vous déclarez une variable de ce type, l'ordniateur vous trouve une petite place de 4 cases consécutives dans la RAM, et retient l'adresse de la première.

Maintenant que vous savez tout ça, qu'est-ce qu'un pointeur. Et bien c'est une variable aussi, au même titre que les int, les float ou les string, il y a les int* les long* les char* ...
Mais ce sont des variables un peu particulières, car elles contiennent deux données. D'une part elle contiennent un nombre qui est une adresse et un autre nombre qui est une longueur. Un pointeur représente donc une adresse dans la RAM et le nombre de cases qu'il faut lire à partir de cette adresse. Et avec ces données, vous pouvez retrouver n'importe quel type de variable dans la RAM.
Il est très important que réaliser qu'un pointeur EST UNE VARIABLE. C'est à dire que lorsque vous déclarer int* ptr; il y a une petite place qui ses réserve dans la RAM pour mémoriser les deux nombres que ce pointeur contient.
Oui mais si un pointeur est une variable, alors il a aussi une adresse ? et un nombre de cases à lire ? Exactement ! C'est grâce à ça qu'on peut alors utiliser des pointeur de pointeur ! Si le pointeur est une variable, il suffit de connaitre son adresse en mémoire, la longueur de cases qu'il occupe et on a un nouveau pointeur vers notre pointeur (lui même quelque part dans la mémoire et ainsi de suite...)

Comment déclarer un pointeur ?
C'est très simple. La syntaxe est la suivante:
type* nom_pointeur;
où type est le type de variable comme int, char,...
notez que type* est un type. par exemple int* est un type.
Si vous désirez donc déclarer un pointeur qui pointe vers une variable de type int* (c'est à dire déclarer un pointeur de pointeur d'entier) il suffit de déclarer int** pptr;
Conseil supplémentaire: si vous n'avez pas directement de valeur à mettre dans votre pointeur, il est fortement recommandé de l'initialiser à NULL c'est à dire
int* pointeur = NULL;
et NULL se trouve dans la librairie iostream entre autres.



Pour continuer, je préfèrerais avec des questions un peu plus précises, car il serait possible d'écrire des livres entiers sur les pointeurs !
Duche
Duche
Modérateur
Modérateur

Masculin Nombre de messages : 2210
Age : 39
Localisation : Louvain-la-Neuve (Belgique)
Profession / Etudes : Développeur en optimisation
Points : 8265
Date d'inscription : 16/01/2006

Revenir en haut Aller en bas

[c++]Posez vos questions... Empty Re: [c++]Posez vos questions...

Message par Julien Ven 5 Oct 2007 - 14:31

Merci pour les explications très claires !

J'ai tout de même une question.

le_duche a écrit:Un pointeur représente donc une adresse dans la RAM et le nombre de cases qu'il faut lire à partir de cette adresse. Et avec ces données, vous pouvez retrouver n'importe quel type de variable dans la RAM.

Il faut nécessairement l'adresse et la longueur ? Est-ce-que juste l'adresse ne suffirait-elle pas à localiser le type de variable dans la RAM ?


Aussi, est-ce qu'on peut utiliser un pointeur pour une fonction ?
Julien
Julien
Administrateur
Administrateur

Masculin Nombre de messages : 12291
Age : 37
Localisation : Clermont-Ferrand
Profession / Etudes : Ingénieur
Points : 22499
Date d'inscription : 10/03/2005

Revenir en haut Aller en bas

[c++]Posez vos questions... Empty Re: [c++]Posez vos questions...

Message par Duche Ven 5 Oct 2007 - 15:08

oui oui il faut savoir de quel type il s'agit !
Quelque soit le type utilisé, ce qu'il y a dans la RAM c'est des 1 et des 0. Stocker le type en plus ferait perdre 25% de ta RAM Smile
Duche
Duche
Modérateur
Modérateur

Masculin Nombre de messages : 2210
Age : 39
Localisation : Louvain-la-Neuve (Belgique)
Profession / Etudes : Développeur en optimisation
Points : 8265
Date d'inscription : 16/01/2006

Revenir en haut Aller en bas

[c++]Posez vos questions... Empty Re: [c++]Posez vos questions...

Message par minidiane Ven 5 Oct 2007 - 15:51

Merci le_duche je comprend un peu mieux à présent.
Par contre je n'ai pas très bien compris l'histoire des pointeurs de pointeurs d'ailleurs je n'avais pas compris en cours non plus l'année dernière et je devrai repasser cela au prochain semestre. J'aimerai bien des explications supplémentaires stp. Merci
minidiane
minidiane
Membre
Membre

Féminin Nombre de messages : 128
Age : 37
Localisation : Mulhouse
Profession / Etudes : Etudiante
Points : 6204
Date d'inscription : 13/06/2007

Revenir en haut Aller en bas

[c++]Posez vos questions... Empty Re: [c++]Posez vos questions...

Message par Julien Lun 8 Oct 2007 - 16:26

J'ai une question par rapport aux cases mémoires : comment on peut avoir accès aux données qui y sont temporairement casées sans appeler les variables ou pointeurs ?
Julien
Julien
Administrateur
Administrateur

Masculin Nombre de messages : 12291
Age : 37
Localisation : Clermont-Ferrand
Profession / Etudes : Ingénieur
Points : 22499
Date d'inscription : 10/03/2005

Revenir en haut Aller en bas

[c++]Posez vos questions... Empty Re: [c++]Posez vos questions...

Message par Contenu sponsorisé


Contenu sponsorisé


Revenir en haut Aller en bas

Revenir en haut

- Sujets similaires

 
Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum
Ne ratez plus aucun deal !
Abonnez-vous pour recevoir par notification une sélection des meilleurs deals chaque jour.
IgnorerAutoriser