首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

这样传递是通过指针传递的么?解决方法

2012-03-26 
这样传递是通过指针传递的么?typedeflongnumtype[MAXL+1]然后这两个函数这样voidinit(numtypea){memset(a

这样传递是通过指针传递的么?
typedef   long   numtype[MAXL   +   1];

然后这两个函数这样

void   init(numtype   a){
        memset(a,   0,   sizeof(numtype));
        a[0]   =   1;
}

void   plus(numtype   a,   numtype   b){
        long   i,len   =   max(a[0],b[0]);
        for   (i   =   1;   i   <=   len;   i++){
                a[i]   +=   b[i];
                a[i   +   1]   +=   a[i]   /   10;
                a[i]   %=   10;
        }
        if   (a[a[0]   +   1])   a[0]++;
}

这样传递的时候是不是通过指针传递的?

[解决办法]
是的~
[解决办法]
数组作为参数依然会蜕化为指针
[解决办法]
要返回数组,
通常的做法是在调用点定义数组,
然后给函数传递数组首地址,以及数组长度(因为数组退化为指针,丢失长度信息)
然后在函数中对数组操作 ~
[解决办法]
在函数里定义是返回不了的。函数因为返回后,c 就被释放掉了。返回以后也是垃圾值
[解决办法]
1.是的,是指针,因为数组作形参的时候退化为指针

2.返回一个数组是不允许的,你想返回numtype ,就相当于

long [MAXL + 1] get()
{
numtype c;
.....
return c
}

这是不行的,因为返回类型是一个数组

3.get定义返回类型是long *是对的,是返回long类型的指针


热点排行