Bonjour,
voici une fonction retournant un pointeur sur un char.
char* mafonction()
{
char chaine[20];
strcpy(chaine, "Boujour");
return chaine;
}
c'est pas beau !!!
mais si on copie directement le retour de la fonction dans un autre tableau
de char :
int main()
{
char contenant[20];
strcpy(contenant, mafonction());
return 0;
}
est ce qu'il y a danger que le contenu de chaine soit modifié ?
et une autre question : ou est la différence avec le code suivant
int mafonction()
{
int retour;
retour = 10;
return retour;
}
int main()
{
int contenant;
contenant = mafonction();
return 0;
}
Bonjour,
voici une fonction retournant un pointeur sur un char.
char* mafonction()
{
char chaine[20];
strcpy(chaine, "Boujour");
return chaine;
}
c'est pas beau !!!
mais si on copie directement le retour de la fonction dans un autre tableau
de char :
int main()
{
char contenant[20];
strcpy(contenant, mafonction());
return 0;
}
est ce qu'il y a danger que le contenu de chaine soit modifié ?
et une autre question : ou est la différence avec le code suivant
int mafonction()
{
int retour;
retour = 10;
return retour;
}
int main()
{
int contenant;
contenant = mafonction();
return 0;
}
Bonjour,
voici une fonction retournant un pointeur sur un char.
char* mafonction()
{
char chaine[20];
strcpy(chaine, "Boujour");
return chaine;
}
c'est pas beau !!!
mais si on copie directement le retour de la fonction dans un autre tableau
de char :
int main()
{
char contenant[20];
strcpy(contenant, mafonction());
return 0;
}
est ce qu'il y a danger que le contenu de chaine soit modifié ?
et une autre question : ou est la différence avec le code suivant
int mafonction()
{
int retour;
retour = 10;
return retour;
}
int main()
{
int contenant;
contenant = mafonction();
return 0;
}
matt a écritBonjour,
voici une fonction retournant un pointeur sur un char.
char* mafonction()
{
char chaine[20];
strcpy(chaine, "Boujour");
return chaine;
}
c'est pas beau !!!
Et surtout ca va planter car la chaine "chaine" sera désallouée à la fin
de l'execution "mafonction" sauf à la rendre "static"
mais si on copie directement le retour de la fonction dans un autre
tableau de char :
int main()
{
char contenant[20];
strcpy(contenant, mafonction());
return 0;
}
est ce qu'il y a danger que le contenu de chaine soit modifié ?
resultat *indetermine* cf supraet une autre question : ou est la différence avec le code suivant
int mafonction()
{
int retour;
retour = 10;
return retour;
}
int main()
{
int contenant;
contenant = mafonction();
return 0;
}
La difference c'est que le pointeur chaine pointe vers une zone
desallouée en sortie de fonction et seule la valeur du pointeur sera
copiée en sortie.
Dans le second cas, c'est l'entier qui est copié et tout va bien
matt a écrit
Bonjour,
voici une fonction retournant un pointeur sur un char.
char* mafonction()
{
char chaine[20];
strcpy(chaine, "Boujour");
return chaine;
}
c'est pas beau !!!
Et surtout ca va planter car la chaine "chaine" sera désallouée à la fin
de l'execution "mafonction" sauf à la rendre "static"
mais si on copie directement le retour de la fonction dans un autre
tableau de char :
int main()
{
char contenant[20];
strcpy(contenant, mafonction());
return 0;
}
est ce qu'il y a danger que le contenu de chaine soit modifié ?
resultat *indetermine* cf supra
et une autre question : ou est la différence avec le code suivant
int mafonction()
{
int retour;
retour = 10;
return retour;
}
int main()
{
int contenant;
contenant = mafonction();
return 0;
}
La difference c'est que le pointeur chaine pointe vers une zone
desallouée en sortie de fonction et seule la valeur du pointeur sera
copiée en sortie.
Dans le second cas, c'est l'entier qui est copié et tout va bien
matt a écritBonjour,
voici une fonction retournant un pointeur sur un char.
char* mafonction()
{
char chaine[20];
strcpy(chaine, "Boujour");
return chaine;
}
c'est pas beau !!!
Et surtout ca va planter car la chaine "chaine" sera désallouée à la fin
de l'execution "mafonction" sauf à la rendre "static"
mais si on copie directement le retour de la fonction dans un autre
tableau de char :
int main()
{
char contenant[20];
strcpy(contenant, mafonction());
return 0;
}
est ce qu'il y a danger que le contenu de chaine soit modifié ?
resultat *indetermine* cf supraet une autre question : ou est la différence avec le code suivant
int mafonction()
{
int retour;
retour = 10;
return retour;
}
int main()
{
int contenant;
contenant = mafonction();
return 0;
}
La difference c'est que le pointeur chaine pointe vers une zone
desallouée en sortie de fonction et seule la valeur du pointeur sera
copiée en sortie.
Dans le second cas, c'est l'entier qui est copié et tout va bien
Bonjour,
voici une fonction retournant un pointeur sur un char.
char* mafonction()
{
char chaine[20];
strcpy(chaine, "Boujour");
return chaine;
}
c'est pas beau !!!
mais si on copie directement le retour de la fonction dans un autre tableau
de char :
int main()
{
char contenant[20];
strcpy(contenant, mafonction());
return 0;
}
est ce qu'il y a danger que le contenu de chaine soit modifié ?
et une autre question : ou est la différence avec le code suivant
int mafonction()
{
int retour;
retour = 10;
return retour;
}
int main()
{
int contenant;
contenant = mafonction();
return 0;
}
Bonjour,
voici une fonction retournant un pointeur sur un char.
char* mafonction()
{
char chaine[20];
strcpy(chaine, "Boujour");
return chaine;
}
c'est pas beau !!!
mais si on copie directement le retour de la fonction dans un autre tableau
de char :
int main()
{
char contenant[20];
strcpy(contenant, mafonction());
return 0;
}
est ce qu'il y a danger que le contenu de chaine soit modifié ?
et une autre question : ou est la différence avec le code suivant
int mafonction()
{
int retour;
retour = 10;
return retour;
}
int main()
{
int contenant;
contenant = mafonction();
return 0;
}
Bonjour,
voici une fonction retournant un pointeur sur un char.
char* mafonction()
{
char chaine[20];
strcpy(chaine, "Boujour");
return chaine;
}
c'est pas beau !!!
mais si on copie directement le retour de la fonction dans un autre tableau
de char :
int main()
{
char contenant[20];
strcpy(contenant, mafonction());
return 0;
}
est ce qu'il y a danger que le contenu de chaine soit modifié ?
et une autre question : ou est la différence avec le code suivant
int mafonction()
{
int retour;
retour = 10;
return retour;
}
int main()
{
int contenant;
contenant = mafonction();
return 0;
}
voici une fonction retournant un pointeur sur un char.
char* mafonction()
{
char chaine[20];
strcpy(chaine, "Boujour");
return chaine;
}
c'est pas beau !!!
mais si on copie directement le retour de la fonction dans un autre
tableau de char :
int main()
{
char contenant[20];
strcpy(contenant, mafonction());
return 0;
}
est ce qu'il y a danger que le contenu de chaine soit modifié ?
et une autre question : ou est la différence avec le code suivant
int mafonction()
{
int retour;
retour = 10;
return retour;
}
int main()
{
int contenant;
contenant = mafonction();
return 0;
}
voici une fonction retournant un pointeur sur un char.
char* mafonction()
{
char chaine[20];
strcpy(chaine, "Boujour");
return chaine;
}
c'est pas beau !!!
mais si on copie directement le retour de la fonction dans un autre
tableau de char :
int main()
{
char contenant[20];
strcpy(contenant, mafonction());
return 0;
}
est ce qu'il y a danger que le contenu de chaine soit modifié ?
et une autre question : ou est la différence avec le code suivant
int mafonction()
{
int retour;
retour = 10;
return retour;
}
int main()
{
int contenant;
contenant = mafonction();
return 0;
}
voici une fonction retournant un pointeur sur un char.
char* mafonction()
{
char chaine[20];
strcpy(chaine, "Boujour");
return chaine;
}
c'est pas beau !!!
mais si on copie directement le retour de la fonction dans un autre
tableau de char :
int main()
{
char contenant[20];
strcpy(contenant, mafonction());
return 0;
}
est ce qu'il y a danger que le contenu de chaine soit modifié ?
et une autre question : ou est la différence avec le code suivant
int mafonction()
{
int retour;
retour = 10;
return retour;
}
int main()
{
int contenant;
contenant = mafonction();
return 0;
}
Ce code n'utilise pas la pile mais le code de retour de la fonction. C'est
le principe même d'un code de retour.
Ce code n'utilise pas la pile mais le code de retour de la fonction. C'est
le principe même d'un code de retour.
Ce code n'utilise pas la pile mais le code de retour de la fonction. C'est
le principe même d'un code de retour.
voici une fonction retournant un pointeur sur un char.
char* mafonction()
{
char chaine[20];
strcpy(chaine, "Boujour");
return chaine;
}
c'est pas beau !!!
voici une fonction retournant un pointeur sur un char.
char* mafonction()
{
char chaine[20];
strcpy(chaine, "Boujour");
return chaine;
}
c'est pas beau !!!
voici une fonction retournant un pointeur sur un char.
char* mafonction()
{
char chaine[20];
strcpy(chaine, "Boujour");
return chaine;
}
c'est pas beau !!!
voici une fonction retournant un pointeur sur un char.
char* mafonction()
{
char chaine[20];
strcpy(chaine, "Boujour");
return chaine;
}
c'est pas beau !!!
mais si on copie directement le retour de la fonction dans un autre
tableau de char :
int main()
{
char contenant[20];
strcpy(contenant, mafonction());
return 0;
}
est ce qu'il y a danger que le contenu de chaine soit modifié ?
et une autre question : ou est la différence avec le code suivant
int mafonction()
{
int retour;
retour = 10;
return retour;
}
voici une fonction retournant un pointeur sur un char.
char* mafonction()
{
char chaine[20];
strcpy(chaine, "Boujour");
return chaine;
}
c'est pas beau !!!
mais si on copie directement le retour de la fonction dans un autre
tableau de char :
int main()
{
char contenant[20];
strcpy(contenant, mafonction());
return 0;
}
est ce qu'il y a danger que le contenu de chaine soit modifié ?
et une autre question : ou est la différence avec le code suivant
int mafonction()
{
int retour;
retour = 10;
return retour;
}
voici une fonction retournant un pointeur sur un char.
char* mafonction()
{
char chaine[20];
strcpy(chaine, "Boujour");
return chaine;
}
c'est pas beau !!!
mais si on copie directement le retour de la fonction dans un autre
tableau de char :
int main()
{
char contenant[20];
strcpy(contenant, mafonction());
return 0;
}
est ce qu'il y a danger que le contenu de chaine soit modifié ?
et une autre question : ou est la différence avec le code suivant
int mafonction()
{
int retour;
retour = 10;
return retour;
}
matt a écritBonjour,
voici une fonction retournant un pointeur sur un char.
char* mafonction()
{
char chaine[20];
strcpy(chaine, "Boujour");
return chaine;
}
c'est pas beau !!!
Et surtout ca va planter car la chaine "chaine" sera désallouée à la fin
de l'execution "mafonction" sauf à la rendre "static"
Ca ne plante pas, un warning à la compilation c'est tout.
matt a écrit
Bonjour,
voici une fonction retournant un pointeur sur un char.
char* mafonction()
{
char chaine[20];
strcpy(chaine, "Boujour");
return chaine;
}
c'est pas beau !!!
Et surtout ca va planter car la chaine "chaine" sera désallouée à la fin
de l'execution "mafonction" sauf à la rendre "static"
Ca ne plante pas, un warning à la compilation c'est tout.
matt a écritBonjour,
voici une fonction retournant un pointeur sur un char.
char* mafonction()
{
char chaine[20];
strcpy(chaine, "Boujour");
return chaine;
}
c'est pas beau !!!
Et surtout ca va planter car la chaine "chaine" sera désallouée à la fin
de l'execution "mafonction" sauf à la rendre "static"
Ca ne plante pas, un warning à la compilation c'est tout.
Eric Levenez wrote on 11/03/2007 18:06:
Ce code n'utilise pas la pile mais le code de retour de la fonction. C'est
le principe même d'un code de retour.
euh, le code de retour est posé sur la pile
soit mais comme l'est
sûrement le tableau non statique utilisé en paramètre local;
la
différence est que l'appelant s'attend dans ce second cas à trouver
cette valeur de retour et la dépile correctement (préserve cette pile
avant de récupérer cette valeur) - dans le premier cas il dépile et
préserve l'adresse du tableau (et elle seule, non l'espace stockant son
contenu) ... une interruption et boum, comme tu l'as expliqué.
le C sait aujourd'hui retourner une structure, pour cela le compilo peut
utiliser la pile pour stocker le résultat complet.
Eric Levenez wrote on 11/03/2007 18:06:
Ce code n'utilise pas la pile mais le code de retour de la fonction. C'est
le principe même d'un code de retour.
euh, le code de retour est posé sur la pile
soit mais comme l'est
sûrement le tableau non statique utilisé en paramètre local;
la
différence est que l'appelant s'attend dans ce second cas à trouver
cette valeur de retour et la dépile correctement (préserve cette pile
avant de récupérer cette valeur) - dans le premier cas il dépile et
préserve l'adresse du tableau (et elle seule, non l'espace stockant son
contenu) ... une interruption et boum, comme tu l'as expliqué.
le C sait aujourd'hui retourner une structure, pour cela le compilo peut
utiliser la pile pour stocker le résultat complet.
Eric Levenez wrote on 11/03/2007 18:06:
Ce code n'utilise pas la pile mais le code de retour de la fonction. C'est
le principe même d'un code de retour.
euh, le code de retour est posé sur la pile
soit mais comme l'est
sûrement le tableau non statique utilisé en paramètre local;
la
différence est que l'appelant s'attend dans ce second cas à trouver
cette valeur de retour et la dépile correctement (préserve cette pile
avant de récupérer cette valeur) - dans le premier cas il dépile et
préserve l'adresse du tableau (et elle seule, non l'espace stockant son
contenu) ... une interruption et boum, comme tu l'as expliqué.
le C sait aujourd'hui retourner une structure, pour cela le compilo peut
utiliser la pile pour stocker le résultat complet.