Форум программистов, компьютерный форум, киберфорум
Наши страницы
C для начинающих
Войти
Регистрация
Восстановить пароль
 
Lille Maya
3 / 3 / 0
Регистрация: 11.09.2015
Сообщений: 96
1

Списки. Ошибка "используется потенциально неинициализированная локальная переменная-указатель "t""

22.05.2016, 09:20. Просмотров 232. Ответов 5
Метки нет (Все метки)

В 35-й выдает ошибку "используется потенциально неинициализированная локальная переменная-указатель "t""
Цель программы. Используя динамическую структуру список, подсчитать сумму отрицательных чисел в списке.

C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
#define _CRT_SECURE_NO_WARNINGS
 
#include <conio.h>
#include <stdio.h>
#include <stdlib.h>
#include <ctype.h>
#include <locale.h>
#include <cstdio>
#include <Windows.h>
 
typedef struct  Zv
{
    int mas;
    struct Zv * next; // ссылка на следующий элемент списка
} Zv;
 
int main()
{
    setlocale(LC_ALL, "Russian");
    Zv * P; // первый элемент списка
    Zv * Z;//
    Zv * t; //последний элемент списка
    int sym;
 
    printf("Введите строку целых чисел, закончив её нулём\n");
    P = NULL;
    do
    {
        scanf("%d", &sym);
        Z = (Zv *)malloc(sizeof(Zv));
        Z->mas = sym;      /* Присваивается значение информационному полю нового элемента*/
        Z->next = 0;
        if (P != 0)
        {  // Если очередь не пуста, очередной элемент добавляется в конец очереди 
            t->next = Z;
            t = Z;
 
        }
        else
        {
            /*  Если очередь пуста,  начало и конец очереди будут указывать на один и тот же элемент  */
            P = Z;
            t = Z;
        }
    } while (sym != 0);
 
 
    printf("Начальный\tКонечный\n");
    while (P != 0)
    {
        printf("%d      \t", t->mas);
        if (P->mas <0) { P->mas = 0; printf("%d      \n", P->mas); }
        else printf("%d      \n", P->mas);
        P = P->next;
    }
 
    system("pause");
    return 0;
 
}
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
22.05.2016, 09:20
Ответы с готовыми решениями:

Ошибка: "используется потенциально неинициализированная локальная переменная-указатель"
switch (m) { case 1: printf(&quot;Put initial capacity\n&quot;); scanf_s(&quot;%d&quot;,...

Ошибка "Неинициализированная локальная переменная"
Решил вспомнить Си и наткнулся на ошибку, я понимаю что она глупая, но если не сложно, то поясните.

Исправить ошибку: error C4700: использована неинициализированная локальная переменная "n"
перевожу с С++ на Си такой код: Код С++: #include &quot;stdafx.h&quot; #include &lt;iostream&gt; ...

Использована неинициализированная локальная переменная "num"
Такой вопрос. В первых функциях переменная num объявлена глобально, а в main уже таковой сделать ее...

"Использована неинициализированная локальная переменная"
#include &lt;iostream&gt; #include &lt;stdio.h&gt; #include &lt;stdlib.h&gt; #include &lt;Windows.h&gt; #include...

5
retmas
Жарю без масла
865 / 747 / 225
Регистрация: 13.01.2012
Сообщений: 1,702
22.05.2016, 09:45 2
это не ошибка, а предупреждение. в данном случае можно не обращать внимания
0
Lille Maya
3 / 3 / 0
Регистрация: 11.09.2015
Сообщений: 96
22.05.2016, 09:52  [ТС] 3
retmas, я бы рада не обращать, но программа то все равно не работает почему то .
Не подскажите в чем может быть проблема
0
retmas
Жарю без масла
865 / 747 / 225
Регистрация: 13.01.2012
Сообщений: 1,702
22.05.2016, 10:30 4
список создается нормально(почти), а дальше (начиная со стр. 48) - странные действия, никак не подходящие под условие
Цитата Сообщение от Lille Maya Посмотреть сообщение
подсчитать сумму отрицательных чисел в списке
Добавлено через 31 минуту
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
#include <stdio.h>
#include <stdlib.h>
#include <locale.h>
 
typedef struct list_node
{
    int value;
    struct list_node* next;
} list_node;
 
typedef struct list
{
    list_node* head;
    list_node* tail;
} list;
 
list_node* node_create(int x)
{
    list_node* ret = malloc(sizeof(list_node));
    if(ret)
    {
        ret->value = x;
        ret->next = NULL;
    }
    return ret;
}
 
void list_push_back(list* l, int x)
{
    list_node* n = node_create(x);
    if(!l->head)
        l->head = l->tail = n;
    else
    {
        l->tail->next = n;
        l->tail = n;        
    }
}
 
int main()
{
    setlocale(LC_ALL, "Russian");
    list il = { NULL, NULL };
    list_node* cur = NULL;
    int val;
    int neg_sum = 0;
 
    puts("Введите строку целых чисел, закончив её нулём:");
    while(scanf("%d", &val) && val)
        list_push_back(&il, val);
    
    puts("Значения в списке:");
    for(cur = il.head; cur; cur = cur->next)
    {
        printf("%d ", cur->value);
        if(cur->value < 0)
            neg_sum += cur->value;
    }
    putchar('\n');
    printf("Сумма отрицательных чисел: %d\n", neg_sum);
    return 0; 
}
1
Lille Maya
3 / 3 / 0
Регистрация: 11.09.2015
Сообщений: 96
22.05.2016, 10:53  [ТС] 5
retmas, спасибо за код и я конечно дико извиняюсь, но в нем тоже ошибки вылазят , malloc в 19-й строке "значение типа "void *" нельзя использовать для инициализации сущности типа "list_node *""
0
retmas
Жарю без масла
865 / 747 / 225
Регистрация: 13.01.2012
Сообщений: 1,702
22.05.2016, 12:34 6
в Си это не ошибка. ошибкой это будет если компилите код как С++. лечится так:
C
1
list_node* ret = (list_node*)malloc(sizeof(list_node));
0
22.05.2016, 12:34
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
22.05.2016, 12:34

Создать запись "Двигатель", которая содержит элементы "Название", "Мощность", "Скорость", "Цена"
Создать запись &quot;Двигатель&quot;, которая содержит элементы &quot;Название&quot;, &quot;Мощность&quot;, &quot;Скорость&quot;,...

Функция замены ":" на "_" в названии файла и ошибка "undefined reference to 'strcat'"
Добрый день,прошу помочь мне с такой проблемой: В общем есть функция,работающая с именем...

Ввести структуру "историческое событие" с полями "число", "месяц", "год", "событие"
Ввести структуру ИСТОРИЧЕСКОЕ СОБЫТИЕ с полями ЧИСЛО, МЕСЯЦ, ГОД, СОБЫТИЕ. Составить и...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.
Рейтинг@Mail.ru