alac 发表于 2013-12-8 15:07:39

函数怎样返回数组

int find(int a)
{
        int j = 0, i, s, b = {0};
        for (i = 1; a / i != 1; i = i * 10) //查询输入的数是几位数
        {
                j++;
                s = j;//最后得到a是j+1位数
        }
        for (i = 0; i <= j; i++)
        {
                b = a / fang(10,s);
                s--;
        }
        for (i = 1; i <= j; i++) //分别求出这个二进制数的各位数
        {
                s++;
                b = b % fang(10,s+1);
        }
        return b;
}
我想写一个函数,数入一个整数,就能把这个数的各位数保存在数组上,并返回主函数,这个要怎么写。这个函数的返回值是int?

maomingkun 发表于 2013-12-8 20:24:15

看看学习下

alac 发表于 2013-12-8 22:11:41

研究更改后
int find(int a, int b)//输入一个数,和一个数组,返回这个数的位数
{
        int j = 0, i, s, k;
        for (i = 1; a / i != 1; i = i * 10) //查询输入的数是几位数
        {
                j++;
                s = j;//最后得到a是j+1位数
        }
        for (i = 0; i <= j; i++)
        {
                b = a / fang(10,s);
                s--;
        }
        for (i = 1; i <= j; i++) //分别求出这个二进制数的各位数
        {
                for (k = 1; k <= i; k++)
                        b = b % fang(10,1);   //fang是一个求次方的函数,第一个数代表底数,第二个表示指数
        }
        return j+1;
}

alac 发表于 2013-12-8 22:13:10

maomingkun 发表于 2013-12-8 20:24 static/image/common/back.gif
看看学习下

谢谢留言。

maomingkun 发表于 2013-12-8 22:53:34

alac 发表于 2013-12-8 22:13 static/image/common/back.gif
谢谢留言。

用指针应该可以,将第一个元素的地址给指针,然后返回指针。

alac 发表于 2013-12-8 22:57:34

maomingkun 发表于 2013-12-8 22:53 static/image/common/back.gif
用指针应该可以,将第一个元素的地址给指针,然后返回指针。

我直接用了数组,因为数组名就是指针。

卧室不要床 发表于 2013-12-8 23:04:28

肯定不对。
返回指针是对的,但至少应该是一个在函数内部动态分配的,而不是函数内的局部对象(局部数组),否则函数返回后指针将变为无效的。
还一种方法是在主调函数中分配一个缓冲区,作为参数传入函数。

alac 发表于 2013-12-8 23:09:52

卧室不要床 发表于 2013-12-8 23:04 static/image/common/back.gif
肯定不对。
返回指针是对的,但至少应该是一个在函数内部动态分配的,而不是函数内的局部对象(局部数组) ...

这么复杂:sweat:

卧室不要床 发表于 2013-12-9 00:32:40

alac 发表于 2013-12-8 23:09 static/image/common/back.gif
这么复杂

慢慢学吧,基础知识
页: [1]
查看完整版本: 函数怎样返回数组