NANTAI NVERSTES BILGISAYAR PROGRAMLAMA STRINGLER Mhendislik Mimarlk Fakltesi
NİŞANTAŞI ÜNİVERSİTESİ BILGISAYAR PROGRAMLAMA STRINGLER Mühendislik Mimarlık Fakültesi mmf. nisantasi. edu. tr NİŞANTAŞI ÜNİVERS İTESİ ©
STRINGLER NİŞANTAŞI ÜNİVERSİTESİ ©
STRINGLER • C dilinde iki tırnak içerisindeki karakterlere string ifadesi ya da kısaca string denir. • Örneğin: • "Necati Ergin" • "x = %dn" • "lütfen bir sayı giriniz : " • ifadelerinin hepsi birer stringdir. • Stringlerin tek bir atom olarak ele alındığını önceki konularımızdan hatırlayacaksınız. C'de • stringler aslında char türden bir adres olarak ele alınmaktadır. C derleyicileri, derleme • aşamasında bir stringle karşılaştığında, önce bu stringi oluşturan karakterleri belleğin • güvenli bir bölgesine yerleştirir, sonuna NULL karakteri ekler ve daha sonra string yerine, • yerleştirildiği yerin başlangıç adresini koyar. Bu durumda string ifadeleri aslında • stringlerin bellekteki başlangıç yerini gösteren char türden birer adrestir. Örneğin: NİŞANTAŞI ÜNİVERSİTESİ ©
STRINGLER • Stringlerin Fonksiyonlara Arguman Olarak Gönderilmesi • Parametre değişkeni char türden bir gösterici olan fonksiyonu char türden bir adres ile çağırmak gerektiğini biliyoruz. Çünkü doğal olarak char türden bir göstericiye char türden bir adres atanmalıdır. Derleyiciler açısından stringler de char türden bir adres belirttiklerine göre, parametre değişkeni char türden gösterici olan bir fonksiyonu bir string ile çağırmak son derece doğal bir durumdur, ve C dilinde bu yapı çok kullanılır: • puts("Necati Ergin"); • Stringlerin Değiştirilmesi • C standartları stringlerin salt okunur bellekte (ROM) tutulabilmelerine izin vermektedir. Bu yüzden bir stringin içeriğinin kaynak kod içinde değiştirilmesi güvenilir bir davranışa karşılık gelmez. Stringleri değiştiren kodlar "tanımsız davranış" (undefined behavior) özelliği gösterirler. NİŞANTAŞI ÜNİVERSİTESİ ©
STRINGLER • Özdeş Stringler • C derleyicileri kaynak kodun çeşitli yerlerinde tamamen özdeş stringlere rastlasa bile bunlar için farklı yerler ayırabilirler. Derleyici özdeş stringlerin sadece bir kopyasını da bellekte saklayabilir. Özdeş stringlerin nasıl saklanacağı bazı derleyicilerde programcının seçimine bırakılmıştır. Derleyicinin ayarları arasında bu konuyla ilgili bir seçenek bulunur. NİŞANTAŞI ÜNİVERSİTESİ ©
STRINGLER NİŞANTAŞI ÜNİVERSİTESİ ©
KAYNAKLAR 1. Brian W. Kernighan , Dennis M. Ritchie, (1988), C Programlama Dili – ANSI C, DAISYSCIENCE, Editor: Dr. Rifat Çölkesen. 2. Necati Ergin, C Ders Notları, C ve Sistem Programcıları Derneği NİŞANTAŞI ÜNİVERSİTESİ ©
- Slides: 7