Bonjour Quelqu'un peut-il expliquer pourquoi la deuxième Cout Func (char * p) ne fonctionne pas:C++ pointeur Cout
#include <cstdlib>
#include <iostream>
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
using namespace std;
char *strhex(char *str);
char *func(char *p);
int main()
{
char *ptr;
char *p=strhex("d");
cout<<"main:"<<p<<endl;
cout<<func(p)<<endl;
system("PAUSE");
return 0;
}
char *func(char *p)
{
cout<<"func1:"<<p<<endl;
char buffer[500]="";
char *zbuffer = buffer;
cout<<"func2:"<<p<<endl; ///doesn't work
return zbuffer;
}
char *strhex(char *str)
{
char buffer[500]="";
char *pbuffer = buffer;
int len = strlen(str);
for(int i = 0; i < len ;i++)
{
itoa(str[i],pbuffer,16);
pbuffer +=2;
};
*pbuffer = '\0';
pbuffer=buffer;
return pbuffer;
}
Edit: J'utilise DEV C++ sous Windows 4.9.9.2
Que voulez-vous dire par "ne fonctionne pas?" –
Renvoyer un pointeur vers une variable locale est probablement une mauvaise idée, mais probablement sans rapport avec votre problème. –
@Carl: Probablement la cause exacte, en fait. L'espace de pile occupé par 'buffer' dans' strhex() 'sera occupé par' buffer' dans 'func()'. –