Struktur C dan Penunjuk (Dengan Contoh)

Dalam tutorial ini, anda akan belajar menggunakan petunjuk untuk mengakses anggota struktur dalam pengaturcaraan C. Anda juga akan belajar untuk memperuntukkan memori jenis struktur secara dinamik.

Sebelum anda mengetahui bagaimana petunjuk dapat digunakan dengan struktur, pastikan untuk memeriksa tutorial ini:

  • Penunjuk C
  • C struktur

C Petunjuk ke struktur

Inilah cara anda boleh membuat petunjuk kepada struktur.

 struct name ( member1; member2;… ); int main() ( struct name *ptr, Harry; )

Di sini, ptr adalah petunjuk untuk struct.

Contoh: Akses ahli menggunakan Pointer

Untuk mengakses anggota struktur menggunakan pointer, kami menggunakan ->operator.

 #include struct person ( int age; float weight; ); int main() ( struct person *personPtr, person1; personPtr = &person1; printf("Enter age: "); scanf("%d", &personPtr->age); printf("Enter weight: "); scanf("%f", &personPtr->weight); printf("Displaying:"); printf("Age: %d", personPtr->age); printf("weight: %f", personPtr->weight); return 0; )

Dalam contoh ini, alamat person1 disimpan di pointer personPtr menggunakan personPtr = &person1;.

Sekarang, anda boleh mengakses ahli person1 menggunakan personPtrpenunjuk.

Ngomong-ngomong,

  • personPtr->age adalah bersamaan dengan (*personPtr).age
  • personPtr->weight adalah bersamaan dengan (*personPtr).weight

Peruntukan memori dinamik untuk struktur

Sebelum anda meneruskan bahagian ini, kami mengesyorkan anda untuk memeriksa peruntukan memori dinamik C.

Kadang kala, bilangan pemboleh ubah struktur yang anda nyatakan mungkin tidak mencukupi. Anda mungkin perlu memperuntukkan memori semasa waktu berjalan. Inilah cara anda dapat mencapainya dalam pengaturcaraan C.

Contoh: Peruntukan memori dinamik untuk struktur

 #include #include struct person ( int age; float weight; char name(30); ); int main() ( struct person *ptr; int i, n; printf("Enter the number of persons: "); scanf("%d", &n); // allocating memory for n numbers of struct person ptr = (struct person*) malloc(n * sizeof(struct person)); for(i = 0; i name and ptr->age is used // To access members of 2nd struct person, // (ptr+1)->name and (ptr+1)->age is used scanf("%s %d", (ptr+i)->name, &(ptr+i)->age); ) printf("Displaying Information:"); for(i = 0; i name, (ptr+i)->age); return 0; ) 

Semasa anda menjalankan program, outputnya adalah:

 Masukkan bilangan orang: 2 Masukkan nama depan dan umur masing-masing: Harry 24 Masukkan nama depan dan umur masing-masing: Gary 32 Maklumat Paparan: Nama: Harry Umur: 24 Nama: Gary Umur: 32

Dalam contoh di atas, bilangan pemboleh ubah struktur dibuat di mana n dimasukkan oleh pengguna.

Untuk memperuntukkan memori untuk n bilangan orang struktur, kami menggunakan,

 ptr = (struct person*) malloc(n * sizeof(struct person));

Kemudian, kami menggunakan penunjuk ptr untuk mengakses elemen orang.

Artikel menarik...