请问这种问题如何解决

#include<stdio.h>
#include<stdlib.h>
#include<limits.h>
typedef struct node {
	int data;
	struct node*next;
}Node;
int main()
{
	int T, n, value;
	scanf_s("%d", &T);
	while (T--)
	{
		Node	*p, *q, *head = NULL, *t;
		int max = INT_MIN, index = 0, num = 0;
		scanf_s("%d", &n);
		while (n--)
		{
			scanf_s("%d", &value);
			index++;
			if (value > max)
			{
				max = value;
				num = index;
			}
			p = (Node*)malloc(sizeof(Node));
			p->next = NULL;
			if (head == NULL)
			{
				head = p;
			}
			else
			{
				q->next = p;
			}
			q = p;
		}
		printf("max=%d num=%d\n", max, num);
	}
	return 0;
}

程序无法运行,出现   C4703    使用了可能未初始化的本地指针变量“q” 的问题,官方的解决方法无效。

最终目的是在单链表中确定值最大的结点

不malloc就没有申请内存空间,程序加两条初始化


#include<stdio.h>
#include<stdlib.h>
#include<limits.h>
typedef struct node {
    int data;
    struct node*next;
}Node;
int main()
{
    int T, n, value;
    scanf_s("%d", &T);
    while (T--)
    {
        Node    *p, *q, *head = NULL, *t;
        int max = INT_MIN, index = 0, num = 0;
        scanf_s("%d", &n);
        while (n--)
        {
            scanf_s("%d", &value);
            index++;
            if (value > max)
            {
                max = value;
                num = index;
            }
            p = (Node*)malloc(sizeof(Node));
            p->next = NULL;
            q = (Node*)malloc(sizeof(Node));
            q->next = NULL;
            if (head == NULL)
            {
                head = p;
            }
            else
            {
                q->next = p;
            }
            q = p;
        }
        printf("max=%d num=%d\n", max, num);
    }
    return 0;
}

那就先初始化q呗, * q=NULL

单就上面代码,没什么问题啊。