Yogurt_lei 发表于 2012-4-7 18:16:48

C语言函数传指针的关系

int * Fun(int n)
{
    int i = 0;
    int * x = (int *)malloc(6 * sizeof(int));

    while ( n!= 0 )
    {
      x = n%2;
      n /= 2;
    }
    return x;
}



调用这个函数返回一个地址让主函数的一个数组接受是二级指针么?
int **a, **b, **c;

*a = Fun(h);
      *b = Fun(m);
      *c = Fun(s);   
方式对不?

for ( i=5;i >= 0;--i )
      {
            printf("%d%d%d",**a,**b,**c);
            a++,b++,c++;
      }
输出呢?

谁来帮忙看看



朗朗 发表于 2012-4-7 18:16:49

#include<stdio.h>
#include<stdlib.h>

int * Fun(int n)
{
    int i = 0;
    int *x = (int *)malloc(6 * sizeof(int));

    while ( n!= 0 )
    {
      x = n%2;
      n /= 2;
    }
    return x;
}

int main(void)
{
        int *a, *b, *c;
        int h=16,m=17,s=18;
        int i;

        a = Fun(h);
    b = Fun(m);
    c = Fun(s);   
       
        for ( i=5;i >= 0;--i )
      {
            printf("%3d%3d%3d\n",*a,*b,*c);
            a++,b++,c++;
      }

        return 0;

}

朗朗 发表于 2012-4-7 21:42:11

*a = Fun(h);
      *b = Fun(m);
      *c = Fun(s);   
这肯定不对,a,b,c都没有初始化,就不能给它所指的变量赋值。

逾越书 发表于 2012-4-7 22:06:15

   a++,b++,c++;
这是语句?可以运行?

yy281566609 发表于 2012-4-8 11:38:54

多级指针大多时候是对多维数组用的,其实你这个一维数组,用单指针就可以了。你返回的本来就是一个数组的首地址而已,一维就够了!

key2046 发表于 2017-1-10 17:32:21

&nbsp;a++,b++,c++;
这是语句?可以运行?
页: [1]
查看完整版本: C语言函数传指针的关系