Bonjour,
Je suis débutant en programmation en langage c et pour ce faire j'ai acheté le livre méthodologie de la programmation en langage c recommandé sur le site developpez.com =>
https://c.developpez.com/livres/index/?page=Les-livres-en-francais#L2100490184
Ce livre est fortement recommandé pour les débutants.
J'ai recopié le code source suivant situé à la page p = 98 présenté ci dessous :
#include <stdio.h>
#include <stdlib.h>
static char* premier_appel_fonction(void)
{
char c = '@';
return &c; // retourne une adresse local qui est détruite apres l'appel de la fonction
}
static void deuxieme_appel_fonction(void)
{
char c = '#';
}
int main(void)
{
char *p = premier_appel_fonction();
printf("Valeur pointé par p = %c lors du premier appel de fonction\n", *p);
deuxieme_appel_fonction();
printf("Valeur pointé par p = %c lors du premier appel de fonction\n", *p);
return EXIT_SUCCESS;
}
Comme on retourne un pointeur sur une variable locale de la fonction = premier_appel_fonction() je devrai voir d'après mon livre un changement de la valeur pointé par p car l'adresse rendre dans la pile de fonction.
J'ai bien le warning du compilateur gcc = retournement_adresse_local.c:7:9: warning: function returns address of local variable [-Wreturn-local-addr]
Cependant je n'arrive pas à éxécuter le programme car j'ai une erreur de segmentation.
Es ce que cela est du aux améliorations du compilateur GCC ?
Es ce que vous pouvez le tester de votre coté et me dire quels sont vos retours ?
Merci pour votre aide.