Perbedaan int main() dan int main(void) Bahasa C
int main() { /* */ return 0;}
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().
// 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;
}
Contoh:
// Program 2 (Kompilasi gagal baik pada bahas C dan C++)
void fun(void) { }
int main(void)
{
fun(10, "ELF", "FAN");
return 0;
}
#include <stdio.h>
int main()
{
static int i = 5;
if (--i){ printf("%d ", i);
main(10); }
}
#include <stdio.h>
int main(void)
{
static int i = 5;
if (--i){ printf("%d ", i);
main(10); }
}
- 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.
- 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[].
- 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.
- 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).
- 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.
Kesimpulan
14 komentar untuk "Perbedaan int main() dan int main(void) Bahasa C"
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 -
apakah fungsi int main(), void main(), dan int main(void) adalah tiga fungsi yang memiliki keluaran yang berbeda?
BalasHapusbisa YA, bisa TIDAK.
Hapustermasuk 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++.
bagaiman dengan fungsi void main (void), apakah fungsi ini akan error jika dikompilasi pada bahasa C?
BalasHapusError tergantung dari banyak faktor, mulai dari kode program yang digunakan, tipe parameter yang digunakan, kompilator yang digunakan, dan lain sebagainya,
Hapusuntuk 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.
Kenapa fungsi void main bernilai error ketika dijalankan?
BalasHapusJenis 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#include
BalasHapusint 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?
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.
HapusBisa jelaskan kenapa diberikan main(10) pada contoh program bahasa c tersebut?
BalasHapusTida 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.
HapusKenapa penulisan argumen return 0 tidak perlu pada bahasa C?
BalasHapusKarena 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.
HapusPada visual studio, int main(void) kemudian memanggil main(10), tetapi tidak memberikan kesalahan pada proses kompilasi program. Kenapa?
BalasHapusProgram akan generate error karena int main(void) tidak memberikan argumen apapun.
Hapus