-2
votes

Passez un seul pointeur de caractère unique pour fonctionner en C

C'est peut-être un problème élémentaire mais je ne peux pas sembler trouver une solution.

J'ai un code comme: p> xxx pré>

et fonction: p>

void function(char* val){
    if (*val == 'I') {
         *val = 'S';
    }
}


4 commentaires

Ce code a l'air bien. Avez-vous vérifié la sortie? VAL doit être S après avoir appelé la fonction.


Cependant, la fonction semble interpréter de caractère * en tant que tableau Comment la fonction a-t-elle exprimé?


Le problème est ailleurs. Vous ne nous montrez pas le code actuel. À cause de cela, je suis DV-Ting et votez fermer goodbolt.org/z/jzvvxx


La réponse d'OP par OP, ils ont eu un bug impliquant diverses déclarations de paramètres non présentées dans la question. La question devrait donc être fermée car elle est inadéquate.


3 Réponses :


-1
votes

Vous pouvez interpréter le pointeur sous forme de tableau à l'index 0. xxx


2 commentaires

Toujours jette une exception. Lorsque vous le voyez en débogage, après avoir entré la fonction, il indique "VAL 0x0000000000000000BC Char *"


Cette réponse n'est pas la solution que OP ne montre pas le code réel et il n'y a pas de différence entre * val et val [0] . Dv-ting



0
votes

Tous les tableaux en C sont interprétés comme un pointeur sur le premier élément et tout pointeur peut être utilisé comme base de réseau pour accéder à la norme N-TH avec la syntaxe [n] forte>. Si vous souhaitez modifier la valeur de ce caractère à l'intérieur d'une fonction, vous devez STRY> DO STRUT> Passez un pointeur, mais il n'y a aucun problème à y accéder comme vous le faire:

// The & here indicates that val is received by reference, meaning that
// if we change val here, it will be also changed where we passed it from.
// Behind the scene it is done by passing a pointer(char*) and replacing
// every access to the variable with dereferencing and then accessing:
// val == 'I' -> *val == I     or val = 'S' with *val = 'S'
void function(char &val){ 
    if (val == 'I') {
        val = 'S';
    } 
}

int main(){
   char val = 'I';
   function(val); // passing as normal char, but will be passed by reference
   return 0;
}


0 commentaires

0
votes

Merci quiconque qui a pris le temps de répondre. Apparemment, j'avais de mauvais paramètres positionnés Char * et INT, le compilateur ne l'a donc pas lancé comme une erreur que possible. Je pense assez de codage pour moi aujourd'hui ^^.


0 commentaires