Passage d'argement chaine

victorcoasne Messages postés 1101 Date d'inscription jeudi 24 avril 2003 Statut Membre Dernière intervention 23 juillet 2023 - 2 août 2004 à 12:16
victorcoasne Messages postés 1101 Date d'inscription jeudi 24 avril 2003 Statut Membre Dernière intervention 23 juillet 2023 - 3 août 2004 à 14:05
Je fais :
int taille(char chaine[])
{
    cout << chaine << endl;
 return (sizeof(chaine)/sizeof(chaine[0]));  
}

int main()
{
char pi[50]="3.1415926";
cout << taille(pi);
}



Et il m'affiche
3.1415926 // <- Là il affiche bien la chaîne entière
4 // <- Là il dit qu'il y a 4 caractères



si je colle "(sizeof(pi)/sizeof(pi[0]))"
dans le " cout << " de "main()" il m'affiche bien 50

HELP ME !!!

Vous voulez des RPG gratuits allez sur http://jeux.jscv.com !!!

Le créateur du site http://www.jscv.com

14 réponses

BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
2 août 2004 à 12:21
La taille d'un pointeur sur code 32 bits est bien de 4 octets, pas de prob. On ajoute un param 'size' a la func si besoin.

ciao...
BruNews, Admin CS, MVP Visual C++
0
victorcoasne Messages postés 1101 Date d'inscription jeudi 24 avril 2003 Statut Membre Dernière intervention 23 juillet 2023 7
2 août 2004 à 12:31
"char chaine []" est pas un pointeur ?

Vous voulez des RPG gratuits allez sur http://jeux.jscv.com !!!

Le créateur du site http://www.jscv.com
0
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
2 août 2004 à 12:32
Quoi d'autre sinon ?

ciao...
BruNews, Admin CS, MVP Visual C++
0
victorcoasne Messages postés 1101 Date d'inscription jeudi 24 avril 2003 Statut Membre Dernière intervention 23 juillet 2023 7
2 août 2004 à 12:34
alors comment savoir la taille de ce qu'il pointe ?

PS : je croyais que c'étais une nouvelle variable ayant tout simplement pris le contenu de celle qui pointe

Vous voulez des RPG gratuits allez sur http://jeux.jscv.com !!!

Le créateur du site http://www.jscv.com
0

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

Posez votre question
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
2 août 2004 à 12:43
strlen

ciao...
BruNews, Admin CS, MVP Visual C++
0
DeAtHCrAsH Messages postés 2670 Date d'inscription vendredi 25 janvier 2002 Statut Membre Dernière intervention 6 février 2013
2 août 2004 à 12:50
BruNews> Un pointeur c'est un push de 4 octets ?

Shell
0
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
2 août 2004 à 12:55
TOUJOURS 4 octets pour TOUT param dans prog compile en 32 bits.
Ordinairement est PUSH mais possible en registre si func est __fastcall.

ciao...
BruNews, Admin CS, MVP Visual C++
0
victorcoasne Messages postés 1101 Date d'inscription jeudi 24 avril 2003 Statut Membre Dernière intervention 23 juillet 2023 7
2 août 2004 à 13:09
dsl je veux pas savoir le nombre de caractère contenu mais simplement le nombres d'éléments maximum !!

Or avec strlen il m'indique 9 or moi je veux qu'il m'indique 50

Vous voulez des RPG gratuits allez sur http://jeux.jscv.com !!!

Le créateur du site http://www.jscv.com
0
victorcoasne Messages postés 1101 Date d'inscription jeudi 24 avril 2003 Statut Membre Dernière intervention 23 juillet 2023 7
2 août 2004 à 13:10
Arrêtez de parler "chinois"

Il me semble que c'est de l'assembleur mais j'en ai jamais fait

Vous voulez des RPG gratuits allez sur http://jeux.jscv.com !!!

Le créateur du site http://www.jscv.com
0
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
2 août 2004 à 13:12
IMPOSSIBLE que la func devine le nbr d'octets libres d'emploi a partir du pointeur, c'est pas la func
int ExtraLucide() que tu ecris.
Ajoute un param size comme dit plus haut.
Ben me voila epuise pour ce post, au prochain.

ciao...
BruNews, Admin CS, MVP Visual C++
0
victorcoasne Messages postés 1101 Date d'inscription jeudi 24 avril 2003 Statut Membre Dernière intervention 23 juillet 2023 7
2 août 2004 à 13:15
on peut pas inventer une fonction pour ?

Vous voulez des RPG gratuits allez sur http://jeux.jscv.com !!!

Le créateur du site http://www.jscv.com
0
DeAtHCrAsH Messages postés 2670 Date d'inscription vendredi 25 janvier 2002 Statut Membre Dernière intervention 6 février 2013
2 août 2004 à 23:07
Non je ne crois pas.
En fait quand tu passes par un pointeur tu indiques l'emplacement en mémoire du premier element. Ensuite pour ta chaine de caractere, le programme sait qu'il faut lire jusqu'a qu'il rencontre le caractere de fin de chaine qui correspond a '\0'. Mais en aucun cas il ne sait la taille allouée pour la variable en question.

Comme te la suggeré BruNews, passe la taille de ton tableau en parametre a ta fonction. C'est le plus simple a faire.

Shell
0
cs_djl Messages postés 3011 Date d'inscription jeudi 26 septembre 2002 Statut Membre Dernière intervention 27 novembre 2004 7
2 août 2004 à 23:21
victorcoasne > quand tu passe un tableau en parametre, c'est une conversion implicite en pointeur

void func(char []) <-> void func(char *) ...

sizeof est un operateur qui retourne la taille d'une variable, 4 octet pour un pointeur et N * sizeof T pour T tab[N]

apprend qu'un pointeur et un tableau sont 2 choses differentes
0
victorcoasne Messages postés 1101 Date d'inscription jeudi 24 avril 2003 Statut Membre Dernière intervention 23 juillet 2023 7
3 août 2004 à 14:05
C pas grave j'ai du contouner ça pour faire mon prog

merc à tous

Vous voulez des RPG gratuits allez sur http://jeux.jscv.com !!!

Le créateur du site http://www.jscv.com
0
Rejoignez-nous