LoliDeveloper
@LoliDeveloper
Линейная алгебра как смысл жизни

Почему указатель становится нулём?

main_queue это указатель на структуру очереди, объявлен глобально и инициализируется в Main

Main:
Task firstTask = CreateTask(0, array_size - 1); //создаю задачу
printf("main_queue = %d\n", main_queue); //main_queue = 13571288 
                                    //это указатель поэтому цифры адекватные
push(&(firstTask)); //кладу в очередь, 
                 //но не кладётся поскольку main_queue становится равен нулю втф
printf("First task pushed\n");


push():
void push(Task* new_task)
{
        printf("Enter in push()\n");//самое самое начало
        printf("main_queue = %d\n", main_queue);// ВЫВОДИТ НОЛЬ

Я не понимаю почему он становится нулём.
  • Вопрос задан
  • 177 просмотров
Пригласить эксперта
Ответы на вопрос 2
svsd_val
@svsd_val
Разработчик & администратор M$, GNU/Linux
По логике вещей Вы вызываете каким то образом PUSH до самого присвоения ссылки main_queue, таким образом у вас инициализация переменной main_queue проходит а вот ссылка в ней записывается позже чем вызывается PUSH...
Ответ написан
LoliDeveloper
@LoliDeveloper Автор вопроса
Линейная алгебра как смысл жизни
even if you don't assign anything, it is going to be assigned to zero by default

Not a good practise. number is basically on stack. If you are assigning global pointer to stack address, it becomes invalid when the function exits..!!

Источник
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы