|
Dernière réponse | ||
---|---|---|
Sujet : [c++] chaînes de caractères (char *) | ||
juju_le_barbare |
:jap: |
Aperçu |
---|
Vue Rapide de la discussion |
---|
juju_le_barbare |
:jap: |
El_gringo |
|
juju_le_barbare |
|
kizkoool |
|
El_gringo |
|
antp |
|
juju_le_barbare |
|
smaragdus | Les réponses sont en bleu :
|
antp |
|
El_gringo |
|
juju_le_barbare |
|
El_gringo | ...et ça voulait faire un défragmenteur ! :sarcastic: :D :D :D |
evode | des variables globales, C po terrible :p
si t'as po bcp de valeurs, tu peut faires des passages par references : void toto(int in1, int in2, int &ou1, int &out2) { out1 = in1; out2 = in2; } void pouet() { int var1=1; int var2=2; int var3=0; int var4=0; toto(var1, var2, var3, var4); ===> var3 vaut maintenant 1 et var4 vaut 2 |
antp |
|
juju_le_barbare | salut les développeurs !
Dites pour une chaîne de caractères, vaut-il-mieux utiliser char *a; ou char *a = new char[255]; ??? Quelle est la différence ? Je crois que lorsqu'on choisit la 2eme solution, on peut modifier la chaîne avec strcpy(); ou bien manuellement avec a[5] = 'a';, sachant qu'on ne doit pas dépasser 255 caractères, alors que si on n'ititialise pas avec new, a est un pointeur vers un tableau de 0 éléments, et donc à la moindre tentative d'écriture dans ce tableau on écrase des zones mémoires ... Ce qui provoque une erreur lors de l'utilisation de strcpy(); par exemple... C'est ça ? Et je suis obligé de détruire avec delete [] a; ??? Si je le fais pas la mémoire va rester occupée je me trompe ? C'est grave ? Et pour passer une chaîne de caractères à une fonction, faut-il vraiment passer aussi le nombre d'éléments de ce tableau ? Pour passer un tableau standard de int par exemples, on doit passer le nombre (avec 'sizeof(a)/sizeof(a[0])') car la fonction qui le récupère n'a pas de moyen de récupérer le nombre d'éléments du tableau, par contre dans le cas d'une chaine de caractères, le dernier élément du tableau est '\0' donc la fonction qui récupère la chaîne le sait très bien et lit la chaîne jusqu'à rencontrer '\0'. Par contre la fonction qui récupère la chaîne peut modifier que jusqu'au rang du '\0', pas plus, c'est ça ? Et aussi si j'ai besoin de stocker plusieurs chaînes de cractères j'utilise char **a; ? Mais comment j'utilise l'opérateur new ici ? Ensuite chaque chaîne c'est a[0], a[1], a[2], ... ??? Encore une question, j'ai des fonctions qui doivent renvoyer plusieurs résultats. Comme ce n'est pas possible, j'ai dans ce cas créé plusieurs variables globales, que les fonctions modifient au nécéssaire. C'est une bonne méthode ou ya mieux ? Merci de votre aide :hello: juju |