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.

Sebelum mempelajari materi tentang Perbedaan int main() dan int main(void) Bahasa C, terlebih dahulu pelajari materi tentang: Standar Pemrograman Bahasa C, Fakta dan Mitos Keyword Integer pada Bahasa C, dan Penggunaan Void Main Bahasa C dan Fungsinya.

Perbedaan Kedua Definisi
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.

Baca Juga:
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); } 

 

}


Dalam Bahasa C, deklarasi fungsi main() dapat dituliskan dengan dua bentuk yang umum: int main() dan int main(void). Meskipun keduanya seringkali digunakan secara bergantian, terdapat perbedaan yang penting antara keduanya yang berkaitan dengan parameter yang diterima oleh fungsi main(). Artikel ini akan menjelaskan perbedaan mendasar antara int main() dan int main(void) dalam konteks Bahasa C.

int main(): Menerima Argumen, Tetapi Tidak Memprosesnya
Deklarasi int main() menunjukkan bahwa fungsi main() dapat menerima argumen, tetapi tidak membutuhkannya. Ini berarti, meskipun dapat memberikan argumen saat menjalankan program, fungsi main() tidak akan memproses atau menggunakan argumen tersebut.

Contoh: 
int main(int argc, char *argv[]) {/* Kode program */ return 0;}

Dalam contoh di atas, argc merupakan jumlah argumen yang diberikan saat program dijalankan, dan argv adalah array string yang berisi argumen tersebut.

int main(void): Tidak Menerima Argumen
Deklarasi int main(void) menunjukkan bahwa fungsi main() tidak menerima argumen. Ini berarti bahwa program tidak memperhatikan argumen yang mungkin diberikan saat program dijalankan.

Contoh: 
int main(void) {/* Kode program */ return 0;}

Dalam contoh ini, tidak ada parameter seperti argc atau argv yang diterima oleh fungsi main(). Ini mengindikasikan bahwa program tidak mengharapkan atau membutuhkan argumen pada saat eksekusi.

int main() memiliki beberapa kelebihan tergantung pada kebutuhan program dan fleksibilitas yang diinginkan. Berikut adalah beberapa kelebihan dari penggunaan int main():
  • Fleksibilitas dalam Menerima Argumen: int main() memungkinkan program menerima argumen dari baris perintah saat program dijalankan. Argumen ini dapat digunakan untuk mengonfigurasi program atau memberikan input tertentu yang dibutuhkan oleh program.
  • Kemampuan Memproses Argumen: Dengan parameter int argc dan char *argv[], program dapat memproses argumen yang diberikan dan menggunakan informasi tersebut selama eksekusi. Misalnya, membaca nilai-nilai dari argumen baris perintah.
  • Fleksibilitas dalam Pengembangan dan Pengujian: Program dapat dikembangkan untuk menerima argumen yang berbeda, memberikan fleksibilitas dalam pengembangan dan pengujian. Ini memungkinkan pengujian dengan berbagai konfigurasi tanpa perlu memodifikasi kode setiap saat.
  • Interoperabilitas dengan Sistem Operasi atau Program Lain: Beberapa sistem operasi atau program dapat memerlukan atau memberikan argumen tertentu saat menjalankan program. Penggunaan int main() memungkinkan program berinteraksi lebih baik dengan lingkungan eksekusinya.
  • Kemampuan untuk Meneruskan Informasi: Informasi dapat diteruskan ke program melalui argumen baris perintah, memungkinkan pengguna untuk memasukkan data atau konfigurasi yang diperlukan tanpa perlu mengubah kode program.

Penting untuk mencatat bahwa penggunaan int main() dengan parameter int argc, char *argv[] memberikan kelebihan dalam hal fleksibilitas dan integrasi dengan lingkungan eksekusi program. Namun, kelebihan ini juga harus diimbangi dengan kehati-hatian dalam penggunaannya agar tidak menimbulkan ambiguitas atau potensi masalah pengkodean.

Meskipun int main() memiliki kelebihan dalam fleksibilitas dan kemampuan menerima argumen dari baris perintah, terdapat beberapa kekurangan yang perlu diperhatikan:
  • Potensi Ambiguitas dalam Penggunaan Argumen: Program mungkin menerima argumen yang tidak selalu diperlukan atau digunakan. Hal ini dapat menciptakan potensi ambiguitas dan kesalahan pemrograman jika argumen tidak dikelola dengan benar dalam kode program.
  • Ketergantungan pada Pengguna untuk Memberikan Argumen yang Benar: Pengguna program harus memberikan argumen dengan benar saat menjalankan program. Kesalahan dalam memberikan argumen atau memberikan argumen yang tidak sesuai dengan harapan program dapat menyebabkan masalah atau kesalahan eksekusi.
  • Keterbatasan dalam Situasi Tanpa Argumen: Jika suatu program tidak membutuhkan argumen tambahan, menggunakan int main() tanpa memerlukan argumen dapat memberikan overhead dan kompleksitas yang tidak diperlukan.
  • Pemahaman Kode yang Sulit: Pengguna baru yang membaca kode mungkin kesulitan memahami bagaimana dan di mana argumen dari baris perintah digunakan. Ini dapat menyebabkan kerumitan dan pengurangan keterbacaan kode.
  • Portabilitas yang Tidak Dijamin: Meskipun umumnya diterima di banyak kompiler, ada kemungkinan bahwa beberapa sistem atau lingkungan pengembangan mungkin mengharuskan penggunaan int main(void) sebagai standar. 
  • Keterbatasan dalam Sistem yang Tidak Mendukung Argumen Baris Perintah: Beberapa sistem atau lingkungan mungkin tidak mendukung penggunaan argumen baris perintah, sehingga menghilangkan kebutuhan untuk int main() dengan parameter int argc, char *argv[].

Pemilihan antara int main() dan int main(void) harus mempertimbangkan kebutuhan spesifik dari program yang sedang dikembangkan dan apakah fleksibilitas penggunaan argumen diperlukan atau tidak. Keseimbangan antara fleksibilitas dan kejelasan dalam kode program sangat penting.

Penggunaan int main(void) dalam Bahasa C memiliki kelebihan tertentu yang dapat menjadi pertimbangan dalam pengembangan perangkat lunak. Berikut adalah beberapa kelebihan dari pendeklarasian int main(void):
  • Kejelasan dalam Tidak Menggunakan Argumen: int main(void) menyatakan secara eksplisit bahwa fungsi main() tidak menerima argumen dari baris perintah. Ini memberikan kejelasan kepada pembaca kode bahwa program tidak bergantung pada argumen eksternal.
  • Pemahaman Kode yang Lebih Mudah: Kode program yang menggunakan int main(void) dapat lebih mudah dipahami, terutama bagi pembaca yang tidak ingin menggali lebih dalam ke dalam pengelolaan argumen dari baris perintah.
  • Meminimalkan Potensi Ambiguitas: Dengan tidak menggunakan argumen, int main(void) membantu mengurangi potensi ambiguitas dan kesalahan pemrograman terkait dengan manajemen argumen yang tidak diperlukan.
  • Sederhana dan Tidak Bergantung pada Input Eksternal: Jika program tidak memerlukan input dari argumen baris perintah, menggunakan int main(void) dapat memberikan solusi yang sederhana dan tidak tergantung pada input eksternal.
  • Kemudahan dalam Situasi Tanpa Argumen: Jika program tidak membutuhkan argumen tambahan, penggunaan int main(void) menyederhanakan implementasi tanpa memerlukan pengelolaan argumen yang mungkin tidak digunakan.
  • Portabilitas yang Lebih Tinggi: Beberapa sistem atau lingkungan pengembangan mungkin lebih suka atau mensyaratkan penggunaan int main(void) sebagai bentuk standar, sehingga meningkatkan portabilitas kode program.
  • Penerapan Standar yang Konsisten: Menggunakan int main(void) sesuai dengan standar Bahasa C, dan dapat membantu dalam membuat kode program yang konsisten dan dapat diandalkan di berbagai platform.

Pemilihan int main(void) atau int main() tergantung pada kebutuhan program dan preferensi pengembang. Jika program tidak memerlukan argumen dari baris perintah, int main(void) bisa menjadi pilihan yang lebih sederhana dan jelas.

Meskipun int main(void) memiliki kelebihan tertentu, ada beberapa kekurangan yang perlu dipertimbangkan:
  • Keterbatasan dalam Menerima Argumen: int main(void) tidak dapat menerima argumen dari baris perintah saat program dijalankan. Jika program memerlukan argumen eksternal untuk konfigurasi atau input, penggunaan int main(void) mungkin menjadi keterbatasan.
  • Kurangnya Fleksibilitas dalam Pengujian: Dengan tidak mendukung argumen dari baris perintah, kesulitan dapat muncul dalam melakukan pengujian dengan variasi konfigurasi program yang berbeda.
  • Ketergantungan pada Variabel Global atau Input Lainnya: Tanpa argumen dari baris perintah, program mungkin harus lebih bergantung pada variabel global atau input dari sumber lain, yang dapat mengurangi kejelasan dan modularitas kode.
  • Keterbatasan dalam Interoperabilitas: Beberapa sistem atau lingkungan pengembangan mungkin mensyaratkan penggunaan argumen dari baris perintah untuk interoperabilitas dengan alat atau sistem lainnya. Penggunaan int main(void) dapat membatasi interoperabilitas dalam konteks tertentu.
  • Membutuhkan Modifikasi Kode untuk Menangani Argumen: Jika suatu saat program perlu menerima argumen, penggantian dari int main(void) ke int main() memerlukan modifikasi pada deklarasi fungsi main(). Ini dapat menjadi pekerjaan tambahan jika suatu saat diperlukan.
  • Tidak Sesuai dengan Praktik Umum pada Beberapa Lingkungan: Beberapa tim pengembangan atau lingkungan pengembangan mungkin lebih mengutamakan atau mensyaratkan penggunaan int main() dengan parameter int argc, char *argv[] sebagai praktik umum.
  • Potensi Kesulitan dalam Pembuatan Alat Bantu dan Debugging: Alat bantu dan debugging yang mengandalkan argumen dari baris perintah mungkin tidak dapat berinteraksi dengan baik dengan program yang menggunakan int main(void).

Pemilihan antara int main(void) dan int main() harus didasarkan pada kebutuhan dan spesifikasi program yang sedang dikembangkan. Jika program tidak memerlukan argumen dari baris perintah, dan fleksibilitas dalam hal itu tidak kritis, maka int main(void) dapat menjadi pilihan yang sesuai. Namun, jika program memerlukan argumen atau kemudahan pengujian yang lebih besar, maka int main() mungkin lebih sesuai.

Pemilihan Bergantung pada Kebutuhan Program:
  • Jika Program Membutuhkan Input dari Baris Perintah: Pilih int main() untuk memungkinkan fleksibilitas dalam menerima argumen. Ini umumnya digunakan dalam program yang memproses atau memanfaatkan argumen yang diberikan saat program dijalankan.
  • Jika Program Tidak Membutuhkan Input Tambahan: Pilih int main(void) untuk menyatakan dengan jelas bahwa program tidak mengharapkan argumen dan untuk menghindari potensi ambiguitas atau kesalahan pemrograman terkait argumen.

Catatan: Penting untuk selalu memilih deklarasi fungsi main() yang sesuai dengan kebutuhan program dan untuk memahami konsekuensi dari pilihan tersebut terhadap fleksibilitas dan jelasnya kode program.

Kesimpulan

Perbedaan antara int main() dan int main(void) terletak pada cara fungsi main() menangani argumen. Pemilihan antara keduanya tergantung pada kebutuhan program. Jika program memerlukan atau dapat memanfaatkan argumen yang diberikan saat eksekusi, int main() dengan parameter int argc, char *argv[] dapat digunakan. Jika program tidak memerlukan argumen tambahan, atau jika tidak ingin memperhatikan argumen yang mungkin diberikan, maka dapat menggunakan int main(void).

Penting untuk diingat bahwa kedua bentuk ini sah dalam Bahasa C, dan pemilihan tergantung pada desain dan kebutuhan spesifik program yang sedang dikembangkan.

Referensi Tambahan:

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 -