Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Argumen adalah nama nilai yang diteruskan ke suatu fungsi dengan pemanggilan fungsi. Parameter adalah nilai yang diharapkan diterima oleh fungsi tersebut. Dalam sebuah prototipe fungsi, tanda kurung setelah nama fungsi berisi daftar lengkap parameter fungsi dan tipenya. Deklarasi parameter menentukan tipe, ukuran, dan pengidentifikasi nilai yang disimpan dalam parameter.
Sintaks
function-definition
:
declaration-specifiers
optattribute-seq
opt declarator
declaration-list
opt compound-statement
/* attribute-seq
adalah khusus untuk Microsoft */
declarator
:
pointer
Memilih direct-declarator
direct-declarator
: /* Sebuah deklarator fungsi */
direct-declarator
(
parameter-type-list
)
/* Deklarator gaya baru */
direct-declarator
(
identifier-list
opt )
/* Deklarator gaya usang */
parameter-type-list
: /* Daftar parameter */
parameter-list
parameter-list
, ...
parameter-list
:
parameter-declaration
parameter-list
,
parameter-declaration
parameter-declaration
:
declaration-specifiers
declarator
declaration-specifiers
abstract-declarator
Memilih
parameter-type-list
adalah barisan deklarasi parameter yang dipisahkan oleh koma. Bentuk setiap parameter dalam daftar parameter terlihat seperti ini:
register
opt opttype-specifier
declarator
Fungsi parameter yang dideklarasikan dengan atribut auto
akan menghasilkan kesalahan. Pengidentifikasi parameter digunakan dalam isi fungsi untuk merujuk ke nilai yang diteruskan ke fungsi. Anda dapat memberi nama parameter dalam prototipe, tetapi nama keluar dari cakupan di akhir deklarasi. Artinya, nama parameter dapat ditetapkan dengan cara yang sama atau berbeda dalam definisi fungsi. Pengidentifikasi ini tidak dapat didefinisikan ulang di blok terluar dari badan fungsi, tetapi mereka dapat didefinisikan ulang di blok dalam berlapis seolah-olah daftar parameter adalah blok penutup.
Setiap pengidentifikasi dalam parameter-type-list
harus didahului oleh penentu tipe yang sesuai, seperti yang ditunjukkan dalam contoh ini:
void new( double x, double y, double z )
{
/* Function body here */
}
Jika setidaknya satu parameter muncul dalam daftar parameter, daftar tersebut dapat diakhiri dengan koma dan diikuti oleh tiga titik (, ...
). Konstruksi ini, yang disebut dengan "notasi elipsis,"menunjukkan jumlah variabel argumen ke fungsi. (Untuk informasi selengkapnya, lihat Panggilan dengan Jumlah Variabel Argumen.) Namun, panggilan ke fungsi setidaknya harus memiliki argumen sebanyak parameter yang ada sebelum koma terakhir.
Jika tidak ada argumen yang akan diteruskan ke fungsi, daftar parameter digantikan oleh kata kunci void
. Penggunaan void
ini berbeda dari penggunaannya sebagai penentu tipe.
Urutan dan tipe parameter, termasuk penggunaan notasi elipsis, harus sama dalam semua deklarasi fungsi (jika ada) dan dalam definisi fungsi. Tipe argumen setelah konversi aritmatika biasa harus kompatibel dengan tipe parameter yang sesuai. (Lihat Konversi Aritmatika Biasa untuk informasi tentang konversi aritmatika.) Argumen setelah elipsis tidak diperiksa. Sebuah parameter dapat memiliki tipe fundamental, struktur, gabungan, penunjuk atau array apa pun.
Kompilator melakukan konversi aritmatika biasa secara independen pada setiap parameter dan argumen, jika perlu. Setelah konversi, tidak ada parameter yang lebih pendek dari int
, dan tidak ada parameter yang memiliki tipe float
, kecuali tipe parameter secara eksplisit ditentukan sebagai float
dalam prototipe. Ini berarti, misalnya, mendeklarasikan sebuah parameter sebagai char
memiliki efek yang sama dengan mendeklarasikannya sebagai int
.