La version 1 indique une erreur de segmentation, mais lorsque je lance la version 2, cela fonctionne correctement.Erreur de segmentation lors du renvoi direct de l'adresse mais pas d'erreur lors de son renvoi via le pointeur
Pourquoi?
main()
{
int *p;
p=fun();
print p;
print *p
}
//version 1 gives segmentation fault
int *fun()
{
int i=20;
return &i
}
//version 2 runs fine
int *fun()
{
int i=20;
int *ptr=&i;
return ptr;
}
De quelle langue s'agit-il? Qu'est-ce que 'print'? Tel qu'il est écrit, il n'est clairement pas C, bien qu'il y ressemble. –
vous ne devez pas renvoyer de pointeurs aux variables locales. Il en résulte UB – pm100
Note: L'étiquette 'C' a été ajoutée par quelqu'un d'autre que l'affiche originale. –