未解决的问题2014-6-10

今天随手练习一下,遇到了个问题。如下代码为默认输入和结果均为正值的手工减法模拟。
但是在这一行会seg fault:
 reminus(k[0],k[1],k[2],lt,lt+1,lt+2);
不知为何会这样。貌似跟内存分配方式有关?

#include 
   
   
    
    

inline void reminus( char *n1p, char *n2p, char *resp, int *ln1, int *ln2, int *lres,bool ischar=false){
    int i=0;
    minus();
    puts("===========");
    for(i=0;i<(*ln2);i++) {
        minus(n1p+i,n2p+i,resp+i,true,ischar);
    }
    for(;i<(*ln1);i++)minus(n1p+i,0,resp+i,true,ischar);
    i-=1;
    for(;i>=0 && !resp[i]; i--);
    *lres = i+1;
}

inline void reminus( char *n1p, char *n2p, char *resp, int *ln1, int *ln2, int *lres,bool ischar=false){
    int i=0;
    minus();
    puts("===========");
    for(i=0;i<(*ln2);i++) {
        minus(n1p+i,n2p+i,resp+i,true,ischar);
    }
    for(;i<(*ln1);i++)minus(n1p+i,0,resp+i,true,ischar);
    i-=1;
    for(;i>=0 && !resp[i]; i--);
    *lres = i+1;
}


int main(){
    char t[3][5]={"1234","0234","0000"};
    char* k[3]={"1234","0234","0000"};
    int lt[3]={4,4,0};
    reminus(t[0],t[1],t[2],lt,lt+1,lt+2);
    reminus(k[0],k[1],k[2],lt,lt+1,lt+2);
}

   
   
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值