c-将链表中的值添加到变量中



我正在创建C程序,通过使用while循环遍历来将链表中节点的值相加。

我已经编码了以下内容:

#include <stdio.h>
int main (void)
 {
   struct entry
      {
      int            value;
      struct entry   *next;
      };
   struct entry   n1, n2, n3;
   struct entry   *list_pointer = &n1;
   int sum;
   n1.value = 100;
   n1.next  = &n2;
   n2.value = 200;
   n2.next  = &n3;
   n3.value = 300;
   n3.next  = (struct entry *) 0;    // Mark list end with null pointer
   while ( list_pointer != (struct entry *) 0 ) {
        sum += list_pointer->value;
        list_pointer = list_pointer->next;
     }
  printf ("%in", sum);

 return 0;
}

然而,我得到了以下输出:

    33367

而不是将600作为输出

  int sum;

在这里,您正在创建一个堆栈变量;C标准没有说明它的值,在实践中,它将包含存储它的内存位置上的任何随机字节。有关这方面的更多信息,请参阅此处:C中声明的、未初始化的变量会发生什么?它有价值吗?

您应该明确地将其初始化为零:

  int sum = 0;

另一方面,绝对没有理由在main中定义entry(通常,除非有充分的理由不这样做,否则应该避免嵌套结构声明)。

相关内容

  • 没有找到相关文章

最新更新