Parametreler
Bağımsız değişkenler, işlev çağrısı tarafından işleve geçirilen değerlerin adlarıdır. Parametreler, işlevin almayı beklediği değerlerdir. İşlev prototipinde, işlev adını izleyen parantezler işlevin parametrelerinin ve türlerinin tam listesini içerir. Parametre bildirimleri, parametrelerde depolanan değerlerin türlerini, boyutlarını ve tanımlayıcılarını belirtir.
Sözdizimi
function-definition
:
declaration-specifiers
opt attribute-seq
opt opt declarator
declaration-list
compound-statement
/* attribute-seq
Microsoft'a özgü */
declarator
:
pointer
Tercih direct-declarator
direct-declarator
: /* İşlev bildirimcisi */
direct-declarator
(
parameter-type-list
)
/* Yeni stil bildirimcisi */
direct-declarator
(
identifier-list
opt )
/* Eski stil bildirimci */
parameter-type-list
: /* Parametre listesi */
parameter-list
parameter-list
, ...
parameter-list
:
parameter-declaration
parameter-list
,
parameter-declaration
parameter-declaration
:
declaration-specifiers
declarator
declaration-specifiers
abstract-declarator
Tercih
parameter-type-list
, virgülle ayrılmış parametre bildirimleri dizisidir. Parametre listesindeki her parametrenin biçimi şöyle görünür:
register
tercih ettype-specifier
declarator
özniteliğiyle auto
bildirilen işlev parametreleri hata oluşturur. Parametrelerin tanımlayıcıları işlev gövdesinde işleve geçirilen değerlere başvurmak için kullanılır. Parametreleri bir prototipte adlandırabilirsiniz, ancak adlar bildirimin sonunda kapsamın dışına çıkar. Bu, parametre adlarının işlev tanımında aynı şekilde veya farklı şekilde atanabileceği anlamına gelir. Bu tanımlayıcılar işlev gövdesinin en dış bloğunda yeniden tanımlanamaz, ancak parametre listesi kapsayan bir blokmuş gibi iç içe yerleştirilmiş bloklarda yeniden tanımlanabilir.
içindeki parameter-type-list
her tanımlayıcının önünde, bu örnekte gösterildiği gibi uygun tür tanımlayıcısı bulunmalıdır:
void new( double x, double y, double z )
{
/* Function body here */
}
Parametre listesinde en az bir parametre oluşursa, liste virgülle ve ardından üç noktayla (, ...
) bitebilir. "Üç nokta gösterimi" olarak adlandırılan bu yapı işlevin değişken sayıda bağımsız değişkenini gösterir. (Daha fazla bilgi için bkz. Değişken Sayıda Bağımsız Değişken içeren çağrılar.) Ancak, işlev çağrısının en az son virgülden önce parametreler olduğu kadar çok bağımsız değişkeni olmalıdır.
İşleve hiçbir bağımsız değişken geçirilmiyorsa, parametre listesi anahtar sözcüğüyle void
değiştirilir. bu kullanımı void
, tür tanımlayıcısı olarak kullanımından farklıdır.
Üç nokta gösteriminin herhangi bir kullanımı dahil olmak üzere parametrelerin sırası ve türü, tüm işlev bildirimlerinde (varsa) ve işlev tanımında aynı olmalıdır. Her zamanki aritmetik dönüştürmelerden sonraki bağımsız değişkenlerin türleri, ilgili parametrelerin türleriyle atama uyumlu olmalıdır. (Bkz. Aritmetik dönüştürmeler hakkında bilgi için Olağan Aritmetik Dönüşümler.) Üç noktayı izleyen bağımsız değişkenler denetlenmiyor. Bir parametre herhangi bir temel, yapı, birleşim, işaretçi veya dizi türüne sahip olabilir.
Derleyici, gerekirse her parametrede ve her bağımsız değişkende her zamanki aritmetik dönüştürmeleri bağımsız olarak gerçekleştirir. Dönüştürme işleminden int
sonra, parametre türü prototipte olduğu gibi float
açıkça belirtilmediği sürece hiçbir parametre bir değerinden kısa değildir ve hiçbir parametre türüne sahip float
değildir. Örneğin, bir parametreyi olarak char
bildirmenin, bunu olarak bildirmeyle aynı etkiye sahip olduğu int
anlamına gelir.