[PIC®/AVR®/dsPIC®产品] C语言:关于函数返回数组的问题

[复制链接]
 楼主| sunflower860 发表于 2013-11-10 10:03 | 显示全部楼层 |阅读模式
本人菜鸟,像各位大仙求教:

定义子函数如下:
uchar Num_Dismantle(uchar var)
{
    char Number[5] = {0,0,0,0,0};
    Number[0] = var % 10;
    Number[1] = (var%100) / 10;
    Number[2] = (var%1000) / 100;
    Number[3] = (var%10000) / 1000;
    Number[4] = var / 10000;
    return Number[];
}

主函数中定义:
uchar a[5];
a[5] = Num_Dismantle(a);
从内存释放看,肯定是错的,好像应该用指针函数做。但小弟不会,特此求教。
tdh03z 发表于 2013-11-10 11:25 | 显示全部楼层
uchar a[5];
void Num_Dismantle(uchar var, uchar *Number)
{
    Number[0] = var % 10;
    Number[1] = (var%100) / 10;
    Number[2] = (var%1000) / 100;
    Number[3] = (var%10000) / 1000;
    Number[4] = var / 10000;
}


函数调用
Num_Dismantle(123, a);

函数调用后,数组a中就保存了计算结果呢,数组作为参数时,传递到函数中时传递的数组地址,所以函数中用一个指针即可
另外uchar是表示无符号单字节数,不可能超过255的,你得不到5位数

评分

参与人数 1威望 +2 收起 理由
sunflower860 + 2

查看全部评分

 楼主| sunflower860 发表于 2013-11-11 11:09 | 显示全部楼层
tdh03z 发表于 2013-11-10 11:25
uchar a[5];
void Num_Dismantle(uchar var, uchar *Number)
{

这么写是不是也行?
void Num_Dismantle(uint var, uchar Number[])
{
    Number[0] = var % 10;
    Number[1] = (var%100) / 10;
    Number[2] = (var%1000) / 100;
    Number[3] = (var%10000) / 1000;
    Number[4] = var / 10000;
}
yewuyi 发表于 2013-11-11 11:17 | 显示全部楼层
1、你一定要弄清楚数组元素,数组元素地址之间的区别.
2、你一定要你弄清楚变量类型和函数类型之间的区别。

评分

参与人数 1威望 +1 收起 理由
sunflower860 + 1

查看全部评分

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

本版积分规则

10

主题

18

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部