C 将结构的两个成员添加到一起

C 将结构的两个成员添加到一起,c,struct,C,Struct,我主要实现了这些函数,loadCryptoVariable和loadHwConfigVariable分别返回一个40位的值 typedef struct Int40 { // a dynamically allocated array to hold a 40 // digit integer, stored in reverse order int *digits; } Int40; 然而,我不知道如何将这两个加在一起……(旁注:我知道我不应该这样做,而应该使用更明确的方

我主要实现了这些函数,loadCryptoVariable和loadHwConfigVariable分别返回一个40位的值

    typedef struct Int40
{
  // a dynamically allocated array to hold a 40
  // digit integer, stored in reverse order
  int *digits;
} Int40;
然而,我不知道如何将这两个加在一起……(旁注:我知道我不应该这样做,而应该使用更明确的方法来做,然而,我现在只是试图找出加在一起的方法)


我不确定我是否理解这个问题,但在阅读时,您需要遍历数组。例如:

Int40 *kw26Add(Int40 *p, Int40 *q)
{
    Int40 *result;
    result = malloc(300);
    result->digits = malloc(300);

    result->digits = p->digits + q->digits;

     return result;
}
for(int i=0;i<40;++i)
结果->数字[i]=p->数字[i]+q->数字[i];

是否在每个数组索引中存储一个40位数字的单个数字?或者您正在将一个(大约)20字节的值打包到数组中?这可能是中询问的代码的延续。@Occazn但您可能还需要担心进位。@SteveSummit进位是什么意思?因为40位将变成41位?@Occazn我仍然不确定你的数字是如何表示的(你使用的是什么基数)。但在十进制中,如果我把数字123和491相加,总和的第二位不是11。因此,当您添加
p->digits[i]
q->digits[i]
时,您还没有完成。(是的,如果数字溢出发生在第40位,那么正确的总和将有41位。)@SteveSummit将所有数字相加时是否会发生这种情况?如果将3添加到9中,它将只返回2?有办法解决这个问题吗?@Occazn是的,当然有办法解决!(否则我们无法计算。)解决这个问题的方法叫做“携带”。如果你知道如何自己做算术,你已经明白这一点,虽然你可能知道它的另一个名字。维基百科上有一篇关于它的文章:。
Int40 *kw26Add(Int40 *p, Int40 *q)
{
    Int40 *result;
    result = malloc(300);
    result->digits = malloc(300);

    result->digits = p->digits + q->digits;

     return result;
}
for (int i = 0; i < 40; ++i)
    result->digits[i] = p->digits[i] + q->digits[i];