Tutoriel C++

cs_Max1me Messages postés 6 Date d'inscription jeudi 12 août 2004 Statut Membre Dernière intervention 17 août 2004 - 13 août 2004 à 03:29
Funto66 Messages postés 1267 Date d'inscription mercredi 1 janvier 2003 Statut Membre Dernière intervention 28 février 2007 - 18 août 2004 à 20:13
Salut :).
Donc je suis à la recherche d'un tutoriel facile en C++. J'en ai suivi qqes-uns mais à chaque fois je bloque (surtout au niveau des pointeurs) :/. J'ai pourtant qqes maigres connaissances en PHP / XHTML, et j'aime bien comprendre en modifiant (quel bonheur les sources de ce site, je m'amuse comme un fou :D) mais c'est malheureusement pas aussi facile qu'en HTML. J'ai aussi deux livres, le manuel C++ qu'on m'a offert ainsi que le C++ précis et concis de chez O'Reilly. Le truc c'est qu'aucun des deux n'explique clairement.
Merci beaucoup d'avance.

11 réponses

fredcl Messages postés 547 Date d'inscription mercredi 8 janvier 2003 Statut Membre Dernière intervention 7 octobre 2007 1
13 août 2004 à 10:16
Salut,
des Tuto tu en trouveras beaucoup ici : http://c.developpez.com/
Mais je ne sais pas s'ils traitent correctement le chapitre des pointeurs.

A+

Fred
0
cs_AlexMAN Messages postés 1536 Date d'inscription samedi 21 décembre 2002 Statut Membre Dernière intervention 24 mai 2009 1
13 août 2004 à 11:16
Max1me > CE sont que les pointeurs que tu as du mal a comprendre ?
0
cs_Max1me Messages postés 6 Date d'inscription jeudi 12 août 2004 Statut Membre Dernière intervention 17 août 2004
13 août 2004 à 17:27
Oui, c'est ce qui m'a fait bloquer sur plusieurs tutos.
0
cs_AlexMAN Messages postés 1536 Date d'inscription samedi 21 décembre 2002 Statut Membre Dernière intervention 24 mai 2009 1
13 août 2004 à 17:33
Un pointeur contient une adresse vers un objet (structure, union, variable..) :
*pointeur = ca s'appelle la dereferenciation, ca permet d'obtenir le contenu de l'objet pointé, exemple :

int *pointeur;
int a = 5;

pointeur = &a; //& devant une variable permet d'obtenir son adresse

printf("%d", *pointeur);

Tu auras en sortie, "5".

C'est vraiment la base sur les pointeurs, mais si tu n'as pas compris, ne tembete pas, redemande moi, je sais ke c dur au depart.

++
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_Max1me Messages postés 6 Date d'inscription jeudi 12 août 2004 Statut Membre Dernière intervention 17 août 2004
13 août 2004 à 19:12
Oui ça j'ai compris, mais c'est à quoi ça sert que j'ai pas compris.
On a tenté de m'expliquer que c'était pour le passage en valeur dans les fonctions, que ça allait plus vite. Mais c'est encore flou :s.
0
Funto66 Messages postés 1267 Date d'inscription mercredi 1 janvier 2003 Statut Membre Dernière intervention 28 février 2007 4
14 août 2004 à 20:19
Ok, donc, un exemple :

#include <stdio.h>

struct Structure
{
int gros_tableau[10000];
};

Structure gros_objet; // "gros_objet" prend beaucoup de place en mémoire

// On a besoin d'une fonction qui prendra en paramètre un objet de type Structure. Seulement voilà, chaque fois que tu passes une variable (ou objet c'est pareil) en paramètre à une fonction, cette variable est copiée pour être utilisée dans la fonction. Dans notre cas, l'objet "gros_objet" serait copié, ce qui serait long et nous ferait perdre de la mémoire (sur la pile). Donc ce qu'on fait, on passe en paramètre l'adresse de "gros_objet" à cette fonction; cette adresse (qui est un nombre 32 bits, pareil qu'un int quoi) sera utilisée en interne dans la fonction, ce qui évitera de gaspiller de la mémoire :) Aussi, si à l'intérieur de la fonction tu modifies l'objet pointé par cette adresse, ben "gros_objet", qui est à l'extérieu de la fonction, sera modifié, puisque c'est lui qui est désigné par l'adresse en question. Bon, allez j'arrête ce commentaire et je passe au code :

void MaFonction(Structure *p_objet)
{
// Ici j'agit sur *p_objet, par exemple :
(*p_objet).gros_tableau[0] = 139;
}

int main()
{
MaFonction(&gros_objet); // Je passe l'adresse en paramètre à MaFonction() (logique puisqu'elle attend un pointeur, soit l'adresse d'une variable).

printf("%d\n", gros_objet.gros_tableau[0]); // Ça affichera 139.
return 0;
}

J'espère avoir été clair...

---------------------------------------------------------
Patience et longueur de temps font plus que force ni que rage....
Coucous flingueurs 3D : http://www.freewebs.com/cf3d/
Un concours de prog graphique, ça vous dit? c'est sur Coder-Studio : http:
0
cs_Max1me Messages postés 6 Date d'inscription jeudi 12 août 2004 Statut Membre Dernière intervention 17 août 2004
15 août 2004 à 14:18
Hmm ok et il faut le faire sur tout (évidemment à part les int et plus petits) ?
0
cs_AlexMAN Messages postés 1536 Date d'inscription samedi 21 décembre 2002 Statut Membre Dernière intervention 24 mai 2009 1
15 août 2004 à 14:26
L'exemple de Funto etait tres bien, tu DOIS passer par un pointeur pour donner ou un tableau, ou un structure ou unions.
0
cs_Max1me Messages postés 6 Date d'inscription jeudi 12 août 2004 Statut Membre Dernière intervention 17 août 2004
15 août 2004 à 14:38
Ok merci bcp à tous alors :).
0
cs_Max1me Messages postés 6 Date d'inscription jeudi 12 août 2004 Statut Membre Dernière intervention 17 août 2004
17 août 2004 à 20:33
Une autre petite question, pourquoi :
#include <stdio.h>

int main(int argc, char *argv[])
{
struct client {
int age;
}
client.age = 67;
return 0;
}
me retourne devant . à la ligne 8 :x ?
Merci ;).
0
Funto66 Messages postés 1267 Date d'inscription mercredi 1 janvier 2003 Statut Membre Dernière intervention 28 février 2007 4
18 août 2004 à 20:13
Ouhla il est pas bon ton truc :S
Déjà, en global, définis ta structure :

struct client
{
int age;
}; // Avec un point-virgule

int main(int argc, char *argv[])
{
client robert;
robert.age = 67; // Robert a 67 ans
return 0;
}

Faut pas définir une structure ou une classe, ou une fonction...etc à l'intérieur d'une fonction ^^

---------------------------------------------------------
Patience et longueur de temps font plus que force ni que rage....
Coucous flingueurs 3D : http://www.freewebs.com/cf3d/
Un concours de prog graphique, ça vous dit? c'est sur Coder-Studio : http:
0
Rejoignez-nous