[ HTML ] [ Java ] [ Bahasa C ]


Minggu, Mei 02, 2021

Perbedaan Antara int main() dan int main(void) pada Bahasa C

Perhatikan dua contoh definisi fungsi main().

int main()
{
/*  */
return 0;}

dan

int main(void)
{
/*  */
return 0;}

Apakah perbedaan kedua definisi tersebut?
Pada C++, tidak terdapat perbedaan apapun pada kedua definisi fungsi tersebut. Juga pada bahasa C kedua fungsi tersebut dapat dijalankan dengan baik, tetapi pada definisi fungsi yang kedua, penggunaan void secara teknis dianggap lebih baik karena memberikan gambaran lebih jelas bahwa fungsi main akan dipanggil tanpa menggunakan parameter apapun.

Pada bahasa C, tanda pengenal fungsi tidak menjelaskan argumen apapun, yang artinya fungsi dapat dipanggil dengan angka berapapun dari parameter atapun tanpa parameter. Contoh, coba lakukan kompilasi dan jalankan dua contoh program bahasa C berikut. Catatan; Perhatikan perbedaan antara kedua tanda fun().

// Program 1, dapat dikompilasi dan dijalankan program 

// tersebut pada bahasa C, tetapi tidak pada C++

void fun() { }

int main(void)

{

 fun(10, "ELF", "FAN");

 return 0;

}


Perhatikan bahwa program pertama dapat dijalankan dengan baik, tetapi pada program kedua hal tersebut menyebabkan error.

// Program 2 (Kompilasi gagal baik pada bahas C dan C++)

void fun(void) { }

int main(void)

{

fun(10, "ELF", "FAN");

return 0;

}


Tidak seperti bahasa C, pada C++, kedua contoh program gagal dikompilasi. Hal ini karena pada C++, baik itu fungsi fun() dan fun(void), keduanya dianggap sama. Jadi perbedaannya adalah, pada bahasa C, int main() dapat dipanggil dengan angka berapapun pada argumen, tetapi int main(void) dapat dipanggil tanpa argumen apapun. Meskipun hal ini tidak membuat perbedaan yang besar, penggunaan int main(void) sangat direkomendasikan pada bahasa C.

Latihan, perkirakan hasil output yang akan keluar.
latihan satu,

#include <stdio.h> 

int main() 

static int i = 5;

 

if (--i){ printf("%d ", i); 

main(10); } 

 

}


Latihan dua,

#include <stdio.h> 

int main(void

static int i = 5

 

if (--i){ printf("%d ", i); 

main(10); } 

 

}

6 komentar:

  1. apakah fungsi int main(), void main(), dan int main(void) adalah tiga fungsi yang memiliki keluaran yang berbeda?

    BalasHapus
    Balasan
    1. bisa YA, bisa TIDAK.

      termasuk atribut dan parameter apa saja yang dikerjakan didalam ketika fungsi tersebut.

      Void main() menunjukkan bahwa fungsi main() tidak akan mengembalikan nilai apapun, tetapi int main() menunjukkan bahwa fungsi main() akan mengembalikan nilai tipe integer ke fungsi pemanggil. Sedangkan int main(void) adalah fungsi main dengan tipe data integer yang dalam pengoperasiannya membutuhkan input nilai dengan tipe data void, dinama fungsi int main(void) memiliki perbedaan jika dikompilasi pada bahasa pemrograman C dan C++.

      Hapus
  2. bagaiman dengan fungsi void main (void), apakah fungsi ini akan error jika dikompilasi pada bahasa C?

    BalasHapus
    Balasan
    1. Error tergantung dari banyak faktor, mulai dari kode program yang digunakan, tipe parameter yang digunakan, kompilator yang digunakan, dan lain sebagainya,

      untuk fungsi void main (void), jika pada bahasa C maksudnya adalah ciptakan sebua fungsi dengan nama main yang tidak mengembalikan nilai apapun kepada fungsi pemanggil, namun untuk dapat menggunakan fungsi tersebut fungsi pemanggil harus menyertakan nilai inputan dengan tipe void ke dalam fungsi.

      Hapus
  3. Kenapa fungsi void main bernilai error ketika dijalankan?

    BalasHapus
    Balasan
    1. Jenis pengembalian fungsi main akan menjadi batal ketika tidak mengembalikan nilai apapun kepada fungsi pemanggil. Void berarti aplikasi tidak diberikan izin apapun untuk menyampaikan argumen ke fungsi pemanggilnya, dimana dengan tidak diterimanya fungsi apapun oleh fungsi pemanggil hal ini akan menyebabkan terjadinya kesalahan atau error pada kompilator.

      Hapus

Respon komentar 7 x 24 jam, so please be patient :D