读书人

一段不解的C程序解决方法

发布时间: 2012-05-23 13:44:13 作者: rapoo

一段不解的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;} 

读书人网 >C语言

热点推荐