Aller au contenu
  • Pas encore inscrit ?

    Pourquoi ne pas vous inscrire ? C'est simple, rapide et gratuit.
    Pour en savoir plus, lisez Les avantages de l'inscription... et la Charte de Zébulon.
    De plus, les messages que vous postez en tant qu'invité restent invisibles tant qu'un modérateur ne les a pas validés. Inscrivez-vous, ce sera un gain de temps pour tout le monde, vous, les helpeurs et les modérateurs ! :wink:

Messages recommandés

Posté(e)

Voilà, je débute en C++, et donc j'ai acheté un bouquin, plutôt bien fait, mais pas toujours bien expliqué :

 

Quel type de contenu désigne char, exactement ?

Pourquoi utiliser #define ou const ?

 

Quelle est la signification de >> et de << en général ?

Comment savoir quels fichiers d'en-tête utiliser ?

 

Je rencontre souvent ceci : char*

Ils disent que c'est un pointeur vers char

Mais à quoi sert un pointeur ? Pourquoi ne pas mettre directement char à la place de char* ?

 

Et pour finir, à quoi cela sert-il de mettre continue; dans une boucle ?

 

Et c'est tout !

 

 

Merci !

Posté(e)

char : longueur 1 octets de -128 a 127

 

char* permet de designer une chaine de caractère (comprendre tableau de char en C++) tandis que char stock 1 et 1 seul caractère.

 

<< envoie ce qui est a droite dans ce qui est a gauche en général :

cout << "Hello World";

pour afficher du texte par exemple

>> envoie ce qui est a gauche dans ce qui est a droite en général :

cout << "Tape un nombre";

cin >> i;

met dans i ce qui a été tapé au clavier

 

les entêtes habituels en C++ sont iostream.h et stdlib.h

 

et pour continue cela permet de "sauter" un tour dans une boucle en fait il fait l'itération suivante de la boucle en oubliant tout le code après.

Posté(e)

Merci bien !

Donc j'ai fait une boucle toute conne :

 

char* c;

int main(int argc, char* argv[])

{

while(cin >> c)

{

cout << c << "n";

}

return 0;

}

 

Mais voilà, si je mets char, ça marche (enfin, 1 seul caractère par ligne)

Si je mets char*, ça quitte le programme.

Posté(e)

c'est con parce que chez moi ce code marche sans pb, t'as quoi comme compilateur ?

Posté(e)

ah microsoft et sa mémoire....

essaie en dimensionnant c par un :

char* c[5];

 

ou un :

#include <iostream.h>

#include <malloc.h>



int main(int argc, char* argv[])

{

char *c;

c=(char *)malloc(5);

while (cin >> c)

{

cout << c << "n";

}

free(c);

return 0;

}

Posté(e)
Voilà, je débute en C++, et donc j'ai acheté un bouquin, plutôt bien fait, mais pas toujours bien expliqué :

 

Quel type de contenu désigne char, exactement ?

char tout court désigne un caractère, c'est à dire un octet contenant le code ASCII d'un caractère...

Pourquoi utiliser #define ou const ?

les commandes qui commencent par un # sont des directives de compilation. Utiliser #define TOTO 12 te permet de remplacer, avant de compiler, tout les TOTO par 12, puis de compiler.

Utiliser un const toto qui vaut 12 (une constante) fait en sorte qu'une zone de mémoire soit allouée pour stocker la valeur 12, et qu'on y accède quand on fait appel à toto... dans le premier cas c'est mis en dur plusieurs fois à la compilation, dans le second cas c'est alloué et utilisé pendant l'exécution.

Quelle est la signification de >> et de << en général ?

En général ce sont des opérateurs de décalage...

OK, décaler une chaine de caractères vers un stream revient à dire au stream de s'occuper de la chaine, mais c'est un cas particulier.

Pour ne pas l'avoir assez utilisé, je te demanderai de vérifier, mais si tu as un entier "toto" qui vaut 256, et si tu fais afficher toto << 3, tu verras que ca a "décalé" les bits de 3 positions vers la gauche (donc ca a divisé ton entier par 2 puissance 3 c'est à dire 8):-)

Comment savoir quels fichiers d'en-tête utiliser ?

Avec un bon vieux grep pour savoir où se trouve la fonction que le compilo prétend ne pas avoir trouvé, ou en apprenant par coeur le contenu des fichiers d'entête standards :-)

Je rencontre souvent ceci : char*

Ils disent que c'est un pointeur vers char

Oui, c'est vrai, toto_t * désigne un pointeur vers une variable de type toto_t

Mais à quoi sert un pointeur ? Pourquoi ne pas mettre directement char à la place de char* ?

Ouh là, c'est trop long à raconter ici en détail...

Un char est un caractère, un char * est un pointeur vers un caractère (c'est à dire que c'est en fait un entier qui contient l'adresse mémoire à laquelle est stocké ton caractère !)

Et pour finir, à quoi cela sert-il de mettre continue; dans une boucle ?

Ca sert à aller directement à la fin de ton itération sans exécuter le code qui se trouve derrière ton continue (donc si c'est tout à la fin de ta boucle, ca ne sert à rien !!)

Et c'est tout !

Et c'est déjà pas mal

Merci !

De rien

Posté(e)

Waow, merci pour les réponses ! :P

 

Par contre, Florent, ton code ne marche pas mieux :

c:c++machinmachin.cpp(18 ) : fatal error C1010: unexpected end of file while looking for precompiled header directive

Error executing cl.exe.

Rejoindre la conversation

Vous pouvez publier maintenant et vous inscrire plus tard. Si vous avez un compte, connectez-vous maintenant pour publier avec votre compte.
Remarque : votre message nécessitera l’approbation d’un modérateur avant de pouvoir être visible.

Invité
Répondre à ce sujet…

×   Collé en tant que texte enrichi.   Coller en tant que texte brut à la place

  Seulement 75 émoticônes maximum sont autorisées.

×   Votre lien a été automatiquement intégré.   Afficher plutôt comme un lien

×   Votre contenu précédent a été rétabli.   Vider l’éditeur

×   Vous ne pouvez pas directement coller des images. Envoyez-les depuis votre ordinateur ou insérez-les depuis une URL.

  • En ligne récemment   0 membre est en ligne

    • Aucun utilisateur enregistré regarde cette page.
×
×
  • Créer...