Lompat ke konten Lompat ke sidebar Lompat ke footer

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

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.

Perbedaan Antara int main() dan int main(void) pada Bahasa C
Ilustrasi Void dan Main Bahasa C


Apakah perbedaan kedua definisi tersebut?
Perhatikan dua contoh definisi fungsi main().

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

dan

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

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().


Contoh:

// 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.

Contoh:

// 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.

Contoh: latihan satu,

#include <stdio.h> 

int main() 

static int i = 5;

 

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

main(10); } 

 

}


Contoh: latihan dua,

#include <stdio.h> 

int main(void

static int i = 5

 

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

main(10); } 

 

}



Artikel ini didedikasikan kepada: Novita Aria Rizki, Reghina Putri Hemayanti, Rinaldi Octavalino, Risma Widiyanti, dan Salma Ferizha Bulan Effendi.

14 komentar untuk "Perbedaan int main() dan int main(void) Bahasa C"

  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
  4. #include
    int main()
    {
    static int i = 5;
    if (i--){
    printf("%d ", i);
    main(10);
    }
    }

    dari contoh program bahasa c tersebut, output apa yang akan dihasilkan, dan kenapa?

    BalasHapus
    Balasan
    1. Pada bahasa C, main bisa memanggil dirinya sendiri. Anda mungkin pernah mendengar istilah rekursi, rekursi merupakan fungsi yang memanggil fungsi itu sendiri dan argumen apapun yang diberikan selain void pada rekursi main tersebut akan menyebabkan perubahan apapun pada program bahasa c. Pikirkan main sebagai fungsi lain diaman akan digunakan rekursi untuk memanggil fungsi itu sendiri, ketika melakukan pemanggilan ulang pada fungsi main lagi dan lai maka hal tersebut akan terus dideklarasikan pada stack dan akhirnya akan menyebabkan stack overflow, itulah alasan utama mengapa i dinyatakan sebagai tipe statis karena variabel statis akan mempertahankan ukuran memorinya diantara beberapa proses pemanggilan atau call. Sedangkan output yang akan dihasilkan dari contoh program tersebut adalah 4 3 2 1 0.

      Hapus
  5. Bisa jelaskan kenapa diberikan main(10) pada contoh program bahasa c tersebut?

    BalasHapus
    Balasan
    1. Tida ada makna penting dari penyebutan main(10) pada program, karena dalam bahasa c ketika dilakukan penyebutan int main(), maka program tersebut akan diteruskan dengan argumen atau tanpa dilakukan penerusan argumen sama sekali. Kedua cara tersebut akan berhasil, sedangkan pada argumen 10 tidak memiliki makna apapun pada fungsi program main. Dimana kode main(10) dapat ditulis main() saja, yang akan mengakibatkan program akan memanggil fungsi secara rekursif setelah kondisi memenuhi persyaratan, yaitu ketika menjadi nol dan keluar dari looping.

      Hapus
  6. Kenapa penulisan argumen return 0 tidak perlu pada bahasa C?

    BalasHapus
    Balasan
    1. Karena fungsi main() adalah jenis fungsi khusus pada bahasa C yang tidak perlu dilakukan penulisan return 0 untuk int main() karena kompilator akan secara otomatis akan memberikan return 0, jika argumen tersebut tidak disertakan.

      Hapus
  7. Pada visual studio, int main(void) kemudian memanggil main(10), tetapi tidak memberikan kesalahan pada proses kompilasi program. Kenapa?

    BalasHapus
    Balasan
    1. Program akan generate error karena int main(void) tidak memberikan argumen apapun.

      Hapus

Hubungi admin melalui Wa : +62-896-2414-6106

Respon komentar 7 x 24 jam, mohon bersabar jika komentar tidak langsung dipublikasi atau mendapatkan balasan secara langsung.

Bantu admin meningkatkan kualitas blog dengan melaporkan berbagai permasalahan seperti typo, link bermasalah, dan lain sebagainya melalui kolom komentar.

- Ikatlah Ilmu dengan Memostingkannya -
- Big things start from small things -