一段不解的C程序
#include "stdio.h"
#define uchar char
#include "string.h"
int copy_data(char *user_space,char cout);
int main()
{
uchar tr[1024];
uchar *user="";
int m= copy_data(user,2);
printf("%d\n",user[0]);
printf("%d\n",user[1]);
return 0;
}
int copy_data(char *user_space,char cout)
{
if(cout<1)
return 0;
uchar tr[2];
uchar Buf[]={120,45,45,56};
char i=0;
for(i=0;i<cout;i++)
{
tr[i]=Buf[i];
}
user_space=tr;
if(i==cout)
return 1;
else return 0;
}
为什么无法输出:120
45
------解决方案--------------------是新生,可以原因。老生,不能原谅,应该要自饿一天。
值传递的问题,不能返回,要返回要用指针的指针。
------解决方案--------------------返回的是局部变量上的数据,在函数调用结束后,局部变量的数据是无效的。
------解决方案--------------------可以结贴了,基本点都说到了。
------解决方案--------------------C/C++ code
#include "stdio.h"
#define uchar char
#include "string.h"
int copy_data(char *user_space,char cout);
int main()
{
uchar tr[1024];
//uchar *user="";
uchar user[5];
int m= copy_data(user,2);
printf("%d\n",user[0]);
printf("%d\n",user[1]);
return 0;
}
int copy_data(char *user_space,char cout)
{
if(cout<1)
return 0;
uchar tr[2];
uchar Buf[]={120,45,45,56};
char i=0;
for(i=0;i<cout;i++)
{
//tr[i]=Buf[i];
*( user_space + i ) = Buf[i];
}
//user_space=tr;
if(i==cout)
return 1;
else return 0;
}