C struct dan Pointers (Dengan Contoh)

Dalam tutorial ini, Anda akan belajar menggunakan pointer untuk mengakses anggota struct dalam pemrograman C. Anda juga akan belajar mengalokasikan memori jenis struct secara dinamis.

Sebelum Anda mempelajari tentang bagaimana pointer dapat digunakan dengan struct, pastikan untuk memeriksa tutorial ini:

  • C Pointer
  • Struktur C

C Pointer ke struct

Inilah cara Anda membuat pointer ke struct.

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

Di sini, ptr adalah penunjuk ke struct.

Contoh: Akses anggota 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 penunjuk personPtr menggunakan personPtr = &person1;.

Sekarang, Anda dapat mengakses anggota person1 menggunakan personPtrpenunjuk.

Ngomong-ngomong,

  • personPtr->age setara dengan (*personPtr).age
  • personPtr->weight setara dengan (*personPtr).weight

Alokasi memori dinamis dari struct

Sebelum Anda melanjutkan bagian ini, kami menyarankan Anda untuk memeriksa alokasi memori dinamis C.

Terkadang, jumlah variabel struct yang Anda nyatakan mungkin tidak mencukupi. Anda mungkin perlu mengalokasikan memori selama run-time. Inilah cara Anda mencapai ini dalam pemrograman C.

Contoh: Alokasi memori dinamis dari struct

 #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; ) 

Saat Anda menjalankan program, hasilnya adalah:

 Masukkan jumlah orang: 2 Masukkan nama depan dan usia masing-masing: Harry 24 Masukkan nama depan dan usia masing-masing: Gary 32 Menampilkan Informasi: Nama: Harry Usia: 24 Nama: Gary Usia: 32

Dalam contoh di atas, n jumlah variabel struct dibuat di mana n dimasukkan oleh pengguna.

Untuk mengalokasikan memori untuk n jumlah orang struct, kami menggunakan,

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

Kemudian, kami menggunakan penunjuk ptr untuk mengakses elemen orang.

Artikel yang menarik...