Hai, saya punya masalah. Saya mencoba menginisialisasi tabel hash dengan array yang berisi daftar tetapi ketika saya menggunakan loop for, semua data "dibagikan". Saya harus menginisialisasi setiap tahun seperti itu:
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
Sekarang saya mencetak tab[0] dan tab[1] dengan fungsi saya sendiri dan saya mendapatkannya
tab[0] = 1,2
tab[2]= 3
Oke, itu berfungsi sesuai keinginan saya
Jika saya melakukan seperti itu, itu tidak akan berhasil :
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
Jika saya melakukan printf :
tab[0] : 1,2,3
tab[1] : 1,2,3
Jadi masalahnya adalah seperti saya mencoba membuat "banyak objek" yang akan menjadi kepala daftar, dan untuk masing-masing objek saya perlu menginisialisasi array dengan ukuran 100, itulah sebabnya saya ingin melakukan loop
Terima kasih !
scope
, Anda harus memindahkanstruct objec_listt A;
ke luar perulangan for. Karena dibuat di dalam loop, setelah Anda keluar dari blok kode itu, kode tersebut tidak ada lagi. Deklarasi tersebut bersifat lokal pada blok kode for loop. - person David C. Rankin   schedule 01.11.2015