C语言中未使用的变量



我目前正在用c编写LinkedList实现。我遇到以下问题:variable 'currentNode' set but not used.

我真的不明白这个。我正在使用currentNode变量!

这是我的代码:

#include <stdio.h>
#include <stdlib.h>
struct node {
    int val;
    struct node * next;
};
int main()
{
    struct node root;
    root.val = 0;
    root.next = NULL;
    struct node currentNode;
    currentNode = root;
    int i;
    for (i = 0; i < 10; ++i)
    {
        struct node newNode;
        newNode.val = i;
        currentNode.next = &newNode;
        currentNode = newNode;
    }
    return 0;
}

您从未读取 currentNode变量。如果您删除所有提到该变量的行,您的程序将完全相同。

(这确实是一个有用的警告:在你的例子中,它可能是为了构建一个包含十个元素的列表,它指出你的代码中有一个致命的错误,这意味着实际的代码什么也不做。)

首先,您可能应该提到,只有在使用-Wall-Wunused-but-set-variable时才会出现此警告。

第二,gccusage的定义是从一个变量中读取,而不是赋值给一个变量。

我发现了另一个问题。

#include <stdio.h>
#include <stdlib.h>
struct node {
    int val;
    struct node * next;
};
int main()
{
    struct node root;
    root.val = 0;
    root.next = NULL;
    struct node currentNode;
    currentNode = root;
    // .... 
    int i;
    for (i = 0; i < 10; ++i)
    {
        // newNode is a temporary value, 
        // its life time end before the next cycle 
        // u should new it 
        struct node newNode;
        newNode.val = i;
        currentNode.next = &newNode;
        currentNode = newNode;
    }
    // ...maybe like this 
    int i;
    for (i = 0; i < 10; ++i)
    {
        struct node* pNewNode = (struct node*)malloc(siof(struct node));
        pNewNode->val = i;
        currentNode.next = pNewNode;
        currentNode = *pNewNode;
    }
    // free node
    // ... 
    return 0;
}

相关内容

  • 没有找到相关文章

最新更新