0
votes

Comment transmettre un pointeur sur la constante "définie" à une fonction en C?

J'ai cette fonction Enqueue qui prend dans un pointeur de la file d'attente et un pointeur INT sur Enqueue. J'ai cette constante définie comme xxx

et je veux le transmettre à la fonction. Cependant, je reçois une erreur disant que ceci est un entier et ne peut pas être jeté sur INT *. Ensuite, j'ai essayé de le transmettre en mettant un "&" mais il n'a pas fonctionné non plus comme j'ai besoin d'une véritable variable au lieu d'une constante définie. Aussi (INT *) n'a pas fonctionné non plus. Y a-t-il un moyen facile de jeter ma variable de sorte que la fonction l'accepte? xxx xxx


4 commentaires

Pourquoi avez-vous besoin du deuxième argument pour être un pointeur?


Cela dit, vous pouvez prendre l'adresse d'une variable et non une valeur.


Lorsque je change le deuxième argument à l'entier, cela fonctionne. Je voulais juste apprendre à travailler avec des pointeurs et casting, mais je suppose que cela n'était pas très lié. Merci.


Défini est la valeur mais pas variable, vous ne pouvez donc pas transmettre l'adresse de son adresse. Vous pouvez initialiser une variable avec cette valeur et passer une adresse de cette variable dans la fonction. mais il n'a pas de sens de passer la variable Pass par référence à moins que votre variable ne soit grande (a la taille qui est plus grande que le pointeur) ou que vous souhaitez modifier la fonction intérieure


3 Réponses :


0
votes

Vous n'avez aucune raison d'utiliser un pointeur ici. Les pointeurs et les références sont utilisés lorsque vous ne voulez pas payer pour la copie de données ou que vous souhaitez modifier leur contenu, de sorte que l'appelant voit également les modifications.

La raison pour laquelle il ne fonctionne pas dans votre cas est l'adresse d'un le nombre n'a pas de sens. Vous ne pouvez prendre que l'adresse des variables.

Si vous souhaitez utiliser une référence ici, vous pouvez utiliser un const et prolongera la durée de vie de temporaire: xxx


0 commentaires

0
votes

Le moteur code> code> n'a aucun type, vous devez lancer directement lorsque la fonction appelée.

queueEnqueue(queue, (int *)(ENGINE));


0 commentaires

0
votes

Dans ce cas, mieux passer le deuxième argument entier comme entier comme: xxx

et appelez-le comme xxx


0 commentaires