C Meneruskan Alamat dan Pointer ke Fungsi

Dalam tutorial ini, Anda akan belajar melewatkan alamat dan pointer sebagai argumen ke fungsi dengan bantuan contoh.

Dalam pemrograman C, dimungkinkan juga untuk melewatkan alamat sebagai argumen ke fungsi.

Untuk menerima alamat ini dalam definisi fungsi, kita bisa menggunakan pointer. Itu karena pointer digunakan untuk menyimpan alamat. Mari kita ambil contoh:

Contoh: Meneruskan Alamat ke Fungsi

 #include void swap(int *n1, int *n2); int main() ( int num1 = 5, num2 = 10; // address of num1 and num2 is passed swap( &num1, &num2); printf("num1 = %d", num1); printf("num2 = %d", num2); return 0; ) void swap(int* n1, int* n2) ( int temp; temp = *n1; *n1 = *n2; *n2 = temp; )

Saat Anda menjalankan program, hasilnya adalah:

 num1 = 10 num2 = 5

Alamat num1 dan num2 diteruskan ke swap()fungsi menggunakan swap(&num1, &num2);.

Pointer n1 dan n2 menerima argumen ini dalam definisi fungsi.

 void swap(int* n1, int* n2) (… ) 

Ketika * n1 dan * n2 diubah di dalam swap()fungsi, num1 dan num2 di dalam fungsi main () juga berubah.

Di dalam swap()fungsinya, *n1dan *n2ditukar. Karenanya, num1 dan num2 juga ditukar.

Perhatikan bahwa swap()tidak mengembalikan apa pun; tipe kembaliannya adalah void.

Contoh 2: Meneruskan Pointer ke Fungsi

 #include void addOne(int* ptr) ( (*ptr)++; // adding 1 to *ptr ) int main() ( int* p, i = 10; p = &i; addOne(p); printf("%d", *p); // 11 return 0; )

Di sini, nilai yang disimpan di p *p,, adalah 10 pada awalnya.

Kami kemudian meneruskan penunjuk p ke addOne()fungsi. Pointer ptr mendapatkan alamat ini dalam addOne()fungsinya.

Di dalam fungsinya, kami meningkatkan nilai yang disimpan di ptr dengan 1 menggunakan (*ptr)++;. Karena pointer ptr dan p keduanya memiliki alamat yang sama, *pinside main()juga 11.

Artikel yang menarik...