void func(int* param){};
func(&123); //error: '&' on constant
funct(&int(123)) //error
Répondre
Ce n'est pas ainsi que fonctionnent les pointeurs.
Vous devez d'abord allouer de la mémoire pour votre 123, comme ceci:
int x = 123;
func(&x);
Il a demandé comment créer un pointeur sur la pile, pas sur le tas. Le deuxième exemple manque également de 'free (x);' –
Vous ne pouvez pas prendre l'adresse d'un temporaire. L'opérateur adresse-de (&
) nécessite un lvalue
en tant qu'argument.
void func(int* param){};
int main(){
int k = 123;
func(&k); //fine now
}
'123' n'est pas un temporaire, c'est un littéral. – fredoverflow
'int (123)' est temporaire, 123 n'est pas –
Le mot-clé &
doit et ne doit être appliqué aux variables réelles et non opérandes.
Déclarer une variable int, puis pointez sur elle:
int main() {
int x = 123;
func(&x);
}
Si vous voulez déclarer un pointeur sur la pile, puis déclarer une variable pointeur int:
int* p = &x;
func(p);
void func(int* param)
{
std::cout << * param << std::endl;
}
int main(int argc, char** argv)
{
int a = 123;
func(&a);
return 0;
}
Le problème est que vous essayez de prendre l'adresse d'un rvalue. Faites-en une valeur:
n = 123;
func(&n);
- 1. Comment supprimer un pointeur sur un pointeur?
- 2. C - Pointeur vers int pour obtenir des éléments dans la pile
- 3. ordre d'allocation sur la pile
- 4. Si j'ai un pointeur vide, comment y mettre un int?
- 5. Pointeur de pile pseudo-aléatoire sous Linux?
- 6. pointeur C sur un pointeur: variable inutilisée
- 7. Comment obtenir l'adresse du pointeur de pile de base
- 8. Créer plusieurs variables numérotées basées sur un int
- 9. Pourquoi utiliser un pointeur vers un pointeur vers la pile lors de la création d'une fonction de poussée?
- 10. Créer un pointeur de fonction qui prend un pointeur de fonction comme argument
- 11. pointeur non valide Opération + pile d'appel
- 12. Comment obtenir la pile de pile dans un appareil mobile?
- 13. Créer un pointeur de fonction qui prend un pointeur de fonction comme argument
- 14. Comment convertir l'adresse d'un int en pointeur char en C?
- 15. Quelle est la manière correcte de déclarer un pointeur sur un pointeur __far?
- 16. Comment convertir int * en int
- 17. PROLOG - Comment implémenter la pile?
- 18. Stocker des données sous le pointeur de la pile?
- 19. Créer un pointeur DWORD de décalage
- 20. Comment écrire un pointeur sur std :: cerr?
- 21. Comment définir un pointeur sur l'emplacement zéro?
- 22. Comment passer un pointeur sur une fonction
- 23. Comment puis-je obtenir la valeur int de object_getIvar (self, myIntVar) comme il renvoie un pointeur
- 24. Création d'un réseau d'objets sur la pile et tas
- 25. déclaration du pointeur sur la fonction
- 26. C: Quelle est la meilleure façon de modifier un pointeur int passé via un typedef?
- 27. Aide à la création d'un pointeur sur un syndicat
- 28. Pointeur COM sur struct
- 29. déréférencer un pointeur à l'intérieur d'un pointeur de la structure
- 30. Structs sur la pile (ANSI C)
'int (123)' n'alloue toujours pas de mémoire dont vous pouvez prendre l'adresse. C'est un littéral, typecasted à 'int'. –