Здравствуйте Может кто-нибудь объяснить, почему второй соиЬ в FUNC (символ * р) не работает:C++ соиЬ указатель
#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: я использую DEV C++ 4.9.9.2 на Windows,
Что вы подразумеваете под «не работает?» –
Возврат указателя на локальную переменную, вероятно, плохая идея, но, вероятно, не связанная с вашей проблемой. –
@ Карл: Наверное, точную причину, на самом деле. Пространство стека, занимаемое 'buffer' в' strhex() ', будет занимать' buffer' в 'func()'. –