打印
[PIC®/AVR®/dsPIC®产品]

C语言:关于函数返回数组的问题

[复制链接]
1359|3
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
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

粉丝