Dizi ve Dizge Teamülleri
Önceki V. Oylum - Diziler ve Dizgeler Sonraki
Dizi ve Dizge Teamülleri
Bu kısımda diziler veya bellek blokları üzerinde çalışan işlevlerle normal karakterlerin ve geniş karakterlerin özellikle boş karakter sonlandırmalı dizileriyle çalışan işlevler açıklanmıştır.
Bellek blokları ile çalışan işlevlerin isimleri mem ve wmem ile başlar ve üzerinde çalışacakları bellek blokunun boyutunu (sırasıyla bayt ve geniş karakter sayısı olarak) belirten bir argüman alırlar. Bu işlevlerin dizi argümanları ve dönüş değerleri void * veya wchar_t türündendir. mem ile başlayan işlev isimlerine sahip işlevler için dizi elemanlarına konu olan baytlardır ve bu işlevlere her çeşit gösterici aktarabileceğiniz gibi, boyut argümanının değerini hesaplarken sizeof işlecini kullanabilirsiniz. wmem işlevlerinin parametreleri wchar_t * türünde olmalıdır. Bu işlevlerde bu tür haricinde bir gösterici kullanamazsınız.
Özellikle normal dizgeler ve geniş karakterli dizgelerle çalışan işlevlerin isimleri sırasıyla str ve wcs ile başlar (strcpy ve wcscpy gibi) ve bir uzunluk argümanı almak yerine dizgeyi sonlandıran boş karaktere bakarlar. (Bu işlevlerin bazıları bir en büyük uzunluk değeri alırlar ve ayrıca bir boş karakterle vaktinden önce sonlandırma olup olmadığını sınarlar.) Bu işlevlerin dizi argümanları ve dönüş değerleri char * ve wchar_t * türünde olmalı ve dizi elemanları sırasıyla normal karakterlerden veya geniş karakterlerden oluşmalıdır.
Birçok durumda bir işlevin hem mem hem de str/wcs sürümleri vardır. Duruma bağlı olarak herbirinin kullanılması gerekebilir. Yazılımınız dizileri veya bellek bloklarını değiştiriyorsa daima mem işlevlerini kullanmalısınız. Diğer taraftan, boş karakter sonlandırmalı dizgelerde değişiklik yapacağınız zaman da, dizgenin uzunluğunu biliyor olmadıkça, str/wcs işlevlerini kullanmak daha uygun olur. Bilinen boyutlarla geniş karakter dizilerinde wmem işlevleri kullanılmalıdır.
Bellek ve dizge işlevlerinin bazıları argüman olarak tek karakter alır. İşlevdeki parametre int türüyle bildirildiğinden, char türünden bir değer parametre olarak kullanıldığında özdevinimli olarak int türünden bir değere terfi ettirilir. Geniş karakterli dizge işlevleri için de benzer bir durum sözkonusudur; tek geniş karakter için parametre wchar_t değil wint_t türündedir. Ancak bir çok gerçekleme wchar_t türü yeterince geniş olduğundan özdevinimli terfiye gerek duymaz. ISO C standardı belli türün seçilmesini gerektirmediğinden wint_t türü kullanılmıştır.
Önceki Üst Ana Başlık Sonraki
Dizgelerle İlgili Kavramlar Başlangıç Dizge Uzunluğu
Bir Linux Kitaplığı Sayfası