begin process at 2012 05 28 10:51:51
  Trouver un code source :
 
dans
 
Accueil > Forum > 

C

 > 

Divers

 > 

Débutant(e)

 > 

Cast de pointeurs


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Cast de pointeurs

mercredi 10 février 2010 à 16:20:06 | Cast de pointeurs

zaraki21

Bonjour,

je travaille actuellement sur une application en C/C++ dans laquelle je dois réaliser une fonction qui prend en paramètre un unsigned char*. Dans le code de la fonction je dois utiliser ce paramètre dans une fonction déjà définie (que je peux en aucun changer car propre à un système) sous la forme d'un int* donc je voudrais savoir si c'est possible de faire un cast pour que ça fonctionne correctement ou bien utiliser une variable intermédiaire. A noter également que je ne peux pas changer le type du paramètre, ça doit rester un unsiged char *.

Merci pour vos réponses.

mercredi 10 février 2010 à 18:07:26 | Re : Cast de pointeurs

juju12

Tu ne peux pas convertir un char* en int*,
étant donné qu'écrire un int c'est remplir 4 octets,
tandis qu'un char c'est seulement un octet...
donc les 3 octets suivants dans la mémoire seraient corrompus.

par contre tu peux passer par un intermédiaire :

Code C/C++ :
void FunctionB(int*);

void FunctionA(char*a){
int b=(int)a;
FunctionB(&b);
a=(char)b;
...
}
mercredi 10 février 2010 à 20:02:19 | Re : Cast de pointeurs

zaraki21

Excuse moi tu pourrais me décrire ce que tu mets dans tes deux fonctions au juste ? Merci
mercredi 10 février 2010 à 20:11:43 | Re : Cast de pointeurs

BruNews

Administrateur CodeS-SourceS
void FunctionA(char*a)
{
int b = (int) a;
donc b = ADDR(a)
et seulement en compil 32, x64 ne vaut plus rien de bon.

b = *a;
Là oui je comprendrais

ciao...
BruNews, MVP VC++
jeudi 11 février 2010 à 08:22:10 | Re : Cast de pointeurs

zaraki21

Je comprends pas trop, au final, b n'est pas un int* ?
jeudi 11 février 2010 à 22:59:56 | Re : Cast de pointeurs

DeAtHCrAsH


Tu peux initialiser un int avec un char et inversement.
Il suffit juste d'utiliser un cast.

Tu peux voir le int * comme un tableau d'entier, donc pas de soucis pour ton cast.

Shell
vendredi 12 février 2010 à 15:44:55 | Re : Cast de pointeurs

uaip

Salut,
Ouai, je ne vois pas trop l'intérêt de passe par des variables intermédiaires.

En admettant que tu aies 2 fonctions
Code C/C++ :
void fctSysteme(int*);
void taFct(char *a);

Il suffit de faire comme ceci :
Code C/C++ :
taFct(char *a) {
    //...
    fctSysteme((int*)a);
    //...
}

Un pointeur, qu'il pointe sur un int ou un char, est de 4 octets.

Cordialement, uaip.
vendredi 12 février 2010 à 16:03:49 | Re : Cast de pointeurs

BruNews

Administrateur CodeS-SourceS
C'était juste pour que la fonction utilisatrice n'aille pas lire 4 octets indument.

ciao...
BruNews, MVP VC++
vendredi 12 février 2010 à 17:41:18 | Re : Cast de pointeurs

juju12

oui, erreur de frappe, fallait lire int b=(int)*a;


Cette discussion est classée dans : fonction, char, paramètre, pointeurs, cast


Répondre à ce message

Sujets en rapport avec ce message

char* et char** (paramètre de fonction in ou out) [ par jockos ] Bonjour, Je ne débute pas le C, mais pourtant il y a un truc que j'ai du mal à saisir...En C :Quand on veut passer un int en paramètre d'une fonction. Info sur les pointeurs [ par HCJarod ] slt, je me demande pourquoi on ne peut pas ecrire (ou c'est mon compilo qui merde)char tab[50];....tab++alors qu'avecchar* tab=new char[50]; oui.techn Bug de fonction gettok(); [ par Tidam ] Salut a tous j'ai fais cette petite fonction on ne peut plus simple mais elle bug et je ne vois pas pourquoi (logique sinon je posterais pas :p)Donc l portabilité du C hoop c BIDON [ par louatiamin ] g un e kestion ki necessite un peu de "profissionalisme" (en tt k mal redigé )mai ma kestion est la suivante:en parlant du C (langage) on dirai la por Petit problème avec NEW DELETE et RETURN [ par kuruma ] Bonjourj'ai un petit problème avec cette fonction. en c++ ou c :#include #include #include #include #include #include <cst fonction qui converti un integer en char* sous VC++ [ par ninouch ] Je voudriat utiliser la fonction TextOut pour afficher un entier à l'écran mais avant je dois le convertir en char*, quelle fonction dois-je utiliser? Quelle est cette erreur __w64 ? [ par themaste ] Bonjour à tous!Je suis en train de faire un programme, que j'avais fais sous dos avant.Puisque ca marchait, je l'ai repris pour faire une application classes et opérations sur des pointeurs [ par cybermax62 ] j'utilise dans un code plusieurs types de pointeurs. je les utilise tous dans différentes classes C++,qui apellent des fonctions et classes. bref, le SetTimer,KillTimer [ par samki ] j essayes d utiliser la fonction SEtTimer mais j ai une erreur comme koi la fonction prend 3 paramètre,alors qu en MSDN j ai troub=vé qu il y a 4 para Créer une fonction à partir d'un char*??? [ par Clonk ] Bonjour,oui, je sais, ça paraît farfelu comme ça ^_^Ayant développé en Lisp, je me demandais s'il était également possible de faire comme le funcall d


Nos sponsors


Sondage...

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

Photothèque

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 3,978 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales