Problème d'exécution d'un pg en c++
Fermé
dragonban
Messages postés
145
Date d'inscription
lundi 20 octobre 2003
Statut
Membre
Dernière intervention
28 avril 2008
-
18 déc. 2003 à 23:37
Dragonban - 19 déc. 2003 à 13:13
Dragonban - 19 déc. 2003 à 13:13
A voir également:
- Problème d'exécution d'un pg en c++
- Processus d'execution client serveur - Forum Windows 10
- Que veut dire pg - Forum Clavier
- Le service sans fil windows n'est pas en cours d'exécution sur cet ordinateur - Forum WiFi
- Erreur d'execution 1004 ✓ - Forum Excel
- Erreur d'exécution 1004 ✓ - Forum Excel
6 réponses
Char *pointer est un pointeur vers un caractère et non une chaine de caractères.
Char string[32] est une chaine de 32 + 1 caractères.
Char string[32] est une chaine de 32 + 1 caractères.
dragonban
Messages postés
145
Date d'inscription
lundi 20 octobre 2003
Statut
Membre
Dernière intervention
28 avril 2008
14
19 déc. 2003 à 09:48
19 déc. 2003 à 09:48
Bonjour Bob,
J'ai le livre "Programmer en langage C++" de Claude Delannoy (niveau débutant à expert) mais j'ai l'impression que le niveau débutant en c++ correspond déjà à un niveau au moins confirmé en langage C.
Je n'ai donc pas compris grand chose sur les pointeurs (leur utilité par rapport aux variables) et sur les références.
Dans le livre, il est écrit char*nomdevariable; pour déclarer une variable chaîne de caractères et char(void*)nomdevariable pour un pointeur. A moins que je n'ai vraiment rien compris au paragraphe.
Bon, je vais essayer sur ton conseil. Mais ça m'étonne que le compilateur n'ait pas déceler d'erreur dans le programme.
Dragonban,
le petit Dragon d'Internet
J'ai le livre "Programmer en langage C++" de Claude Delannoy (niveau débutant à expert) mais j'ai l'impression que le niveau débutant en c++ correspond déjà à un niveau au moins confirmé en langage C.
Je n'ai donc pas compris grand chose sur les pointeurs (leur utilité par rapport aux variables) et sur les références.
Dans le livre, il est écrit char*nomdevariable; pour déclarer une variable chaîne de caractères et char(void*)nomdevariable pour un pointeur. A moins que je n'ai vraiment rien compris au paragraphe.
Bon, je vais essayer sur ton conseil. Mais ça m'étonne que le compilateur n'ait pas déceler d'erreur dans le programme.
Dragonban,
le petit Dragon d'Internet
dragonban
Messages postés
145
Date d'inscription
lundi 20 octobre 2003
Statut
Membre
Dernière intervention
28 avril 2008
14
19 déc. 2003 à 10:00
19 déc. 2003 à 10:00
Bob,
Excuse-moi de revenir dessus mais j'aimerais comprendre quelque chose :
Lorsque je déclare
const char*phrase="choisissez en tapant le numero de la rubrique \n\n";
et que je l'exécute, il n'y a aucun problème (pourtant il n'y a pas de string malgré que la valeur affectée soit une phrase).
Mais là
char*unitebis; // Déclaration de la variable chaîne recevant la déclaration de l'unite de mesure lors d'une entrée au clavier
cela pose problème d'exécution dès l'entrée de la valeur au clavier.
Je ne comprends pas trop. Pourrais-tu m'expliquer un peu plus s'il te plaît ?
Dragonban,
le petit Dragon d'Internet
Excuse-moi de revenir dessus mais j'aimerais comprendre quelque chose :
Lorsque je déclare
const char*phrase="choisissez en tapant le numero de la rubrique \n\n";
et que je l'exécute, il n'y a aucun problème (pourtant il n'y a pas de string malgré que la valeur affectée soit une phrase).
Mais là
char*unitebis; // Déclaration de la variable chaîne recevant la déclaration de l'unite de mesure lors d'une entrée au clavier
cela pose problème d'exécution dès l'entrée de la valeur au clavier.
Je ne comprends pas trop. Pourrais-tu m'expliquer un peu plus s'il te plaît ?
Dragonban,
le petit Dragon d'Internet
Marden
Messages postés
1072
Date d'inscription
dimanche 11 février 2001
Statut
Membre
Dernière intervention
29 janvier 2006
210
19 déc. 2003 à 10:31
19 déc. 2003 à 10:31
Dans le premier cas, le compilateur alloue un pointeur ET une zone (dont l'adresse n'est pas connue du programmeur) dans laquelle il range la chaîne de caractères, en y ajoutant un "\0".
Dans le second cas, seul le pointeur est alloué. C'est au programmeur à allouer, dynamiquement ou non, la zone ET à définir vers quoi (par une instruction d'affectation).
NB : la taille de la zone doit inclure le "null" de fin de chaîne.
Dans le second cas, seul le pointeur est alloué. C'est au programmeur à allouer, dynamiquement ou non, la zone ET à définir vers quoi (par une instruction d'affectation).
NB : la taille de la zone doit inclure le "null" de fin de chaîne.
Un pointeur contient une adresse d'une variable ce qui permet aisément de ne pas stocker plusieur fois la même variable en mémoire.
Exemple:
signed int x; // declaration d'un entier signe
x = 5; // on affecte 5
signed int *y; // declaration d'un pointeur d'entier signe
y = &x; // affectation de y par l'adresse de x avec &
printf("%i", *y); // ici on affiche la valeur pointe par y
Exemple:
signed int x; // declaration d'un entier signe
x = 5; // on affecte 5
signed int *y; // declaration d'un pointeur d'entier signe
y = &x; // affectation de y par l'adresse de x avec &
printf("%i", *y); // ici on affiche la valeur pointe par y
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question