Здравствуйте, у меня проблема. Я пытаюсь инициализировать хэш-таблицу массивом, содержащим список, но когда я использую цикл for, все данные "общие". Я должен инициализировать вручную так:
struct objec_listt A,B; // Initialization of 2 two structure A and B
INIT_LIST_HEAD(&A.list); // A is headlist
INIT_LIST_HEAD(&B.list); // B is headlist
hashtable->tab[0]= &A; // I insert A into the array
hashtable->tab[1]= &B; // I insert B into the array
insert(1,tab[0]); // insert 1, not real syntax
insert(2,tab[0]); // insert 2
insert(3,tab[1]); // insert 3
Теперь я печатаю tab[0] и tab[1] со своей собственной функцией и получаю
вкладка [0] = 1,2
вкладка [2] = 3
хорошо работает как я хочу
Если я сделаю так, это не сработает:
for(i=0; i<2; i++)
{
struct objec_listt A;
INIT_LIST_HEAD(&A.list);
hashtable->tab[i] = &A
}
insert(1,tab[0]); // insert 1,
insert(2,tab[0]); // insert 2
insert(3,tab[1]); // insert 3
Если я делаю printf :
вкладка [0] : 1,2,3
вкладка [1] : 1,2,3
Итак, проблема в том, что я пытаюсь создать «много объектов», которые будут во главе списка, и для каждого мне нужно инициализировать массив размером 100, поэтому я ищу цикл
Спасибо !
scope
, вы должны переместитьstruct objec_listt A;
за пределы цикла for. Поскольку он создается внутри цикла, после выхода из этого блока кода он больше не существует. Объявление было локальным для блока кода цикла for. - person David C. Rankin   schedule 01.11.2015