Perbedaan int main() dan int main(void) Bahasa C
![]() |
Ilustrasi Void dan Main Bahasa C |
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().
// 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); }
}
- 14 Jenis Karakter Escape Sequences pada Bahasa C [klik]
- Cara Pemisahan Baris pada Bahasa C [klik]
- 6+ Jenis Token dan Cara Penggunaannya pada Bahasa C [klik]
- Cara Penggunaan 32 Keyword dan Variabel pada Bahasa C [klik]
- Bagaimana Peran dan Penggunaan Scope Variabel pada Bahasa C [klik]
- 2 Aturan Utama Scope pada Bahasa C [klik]
- 3 Aturan Utama Penggunaan Linker pada Bahasa C [klik]
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