请问会C语言指针的朋友

[复制链接]
查看11 | 回复1 | 2011-4-11 01:26:58 | 显示全部楼层 |阅读模式
unsigned char td[6];

unsigned char *read_time()//读时间,返回数组指针
{
unsigned char temp[6];
temp[0]=Read_RT(R_SEC);//秒
temp[1]=Read_RT(R_MIN);//分
temp[2]=Read_RT(R_HOUR);//时
temp[3]=Read_RT(R_DAY);//日
temp[4]=Read_RT(R_MON);//月
temp[5]=Read_RT(R_YEAR);//年
return temp;
}

void main()
{
td=read_time();
}

这样好像是对的啊,但是提示
operands of = have illegal types `array 6 of unsigned char\' and `pointer to unsigned char\'
回复

使用道具 举报

千问 | 2011-4-11 01:26:58 | 显示全部楼层
<pre id=\"best-answer-content\" class=\"reply-text mb10\">unsigned char td[6];
// td是数组名,也是数组的首地址(此地址不是指针变量,不能用“地址”来赋值)
//unsigned char *read_time() 这个函数返回的就是一个地址


应改正为
1: strcpy(td,read_time()) ;
2:将temp改成指针类型,动态申请内存;td也改成指针类型(unsigned char *)这样两者就可以赋值了(td=read_time();)

注意:将td改成指针类型(unsigned char *),而temp不该,虽然亦可以达到目的,但temp是栈 中内存函数调用结束后被系统回收了(这意味着这块内存会随时被改写)。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行