Добрый день всем,Вызов функции в C & указатель на структуру
я начинаю программировать на C и, может быть, мой вопрос может показаться глупым, но есть какие-либо условия, которые предотвратили бы метод от исполнения?
Теперь я пишу программу, которая использует связанную структуру списка, и каждая вещь компилируется, но после того, как одна определенная строка в программе кода не вызывает методы. Вот мой код:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
typedef struct node
{
char* toFrom;
char* meanOfTr;
int hours;
int min;
double price;
char* note;
struct node *next;
}travel;
typedef struct list
{
travel * head;
}list_t;
void add(list_t *list,char toFrom1[], char meanOfTr1[], char note1[],int hours1,int min1,double price1);
void test();
int main(void) {
list_t *list;
test();
list->head=NULL;
test();
char* a="London";//then b,c,h,m,p variables declarations and initialization,which doesn't matter
add(list,a,b,c,h,m,p);
return 0;
}
void test()
{
printf("test\n");
}
void add(list_t *list,char *toFrom1, char* meanOfTr1, char* note1,int hours1,int min1,double price1)
{
// Some code here
}
Я использую метод испытания, который печатает «тест», чтобы проверить, если программа читает этот метод. Но почему-то после строки «list-> head = NULL;» Программа ничего не печатает => не вызывает метод
Если кто-то может объяснить мне, почему это происходит, я был бы очень благодарен. Thanx заранее
EDIT: Я на самом деле решить проблему: проблема заключалась в том, что точка указатель техника его подводит к реальному объекту, так , когда я добавил
list_t l;
list_t *list = &l;
она работала, надеюсь, это поможет кому-то с той же глупой проблемой (: Спасибо за комментарии я буду иметь в виду все
Что касается вашего редактирования, не делайте этого. Это тоже неопределенное поведение! Как только функция выходит из области видимости, память больше не доступна, вы должны положить ее в кучу через Malloc! –