Bir C İşlevinden Dize Döndürme

Bir C Islevinden Dize Dondurme



A sicim tek bir karakterden veya birden çok karakterden oluşan bir karakter dizisidir ve bilgisayar programcılığında önemli bir veri yapısıdır. ile çalışırken Teller C'de belirli işlemlerin yapılması gerekir. sicim başlatma gibi veri türü sicim , içerik atama, birleştirme Teller , karşılaştırma Teller ve geri dönen sicim .

Bu makale, bu tür bir operasyona odaklanmaktadır. sicim döndüren veri yapısı sicim bir C işlevinden.







Bir C İşlevinden Dize Döndürme

Gibi sicim bir karakter dizisidir ve bir C işlevinden dize döndürmek için, dize veri yapısına bir işaretçinin, çağıran işlevden çağrılan işleve parametre olarak bir argüman olarak iletilmesi gerekir. İşaretçi daha sonra bir karakter dizisini işaret etmek için kullanılabilir. İmleç bir karakter dizisini gösterdiğinde, sicim değer, dönüş ifadesi kullanılarak çağrılan işlevden döndürülebilir.



Daha iyi anlamak için aşağıda verilen örneğe bakabilirsiniz.



#include

sabit karakter * benim adım ( ) {
geri dönmek 'John' ;
}

int ana ( geçersiz ) {
printf ( '%S' , benim adım ( ) ) ;
}





Yukarıdaki kodda normalde yaptığımız gibi değişkeni bildirmek yerine onunla bir işaretçi kullandık ki bu stringi döndürdüğümüzde hata oluşmuyor.

Çıktı




AC işlevi a döndüremez sicim işlev çalışmayı bitirdiğinde değişken hemen kaldırılacağından (serbest bırakılacağından) yerel bir değişken olarak belirtilmiş olup, kullanılamaz hale getirilecek ve aşağıdaki gibi bir uyarı tetiklenecektir:

#include

const char benim adım ( ) {
karakter adı = 'John' ;
geri dönmek isim;
}

int ana ( geçersiz ) {
printf ( '%S' , benim adım ( ) ) ;
}

Bu kodda bir uyarı dize döndürülürken tetiklenir olmadan herhangi bir işaretçi.

Çıktı


Yani, kodu aşağıdaki şekilde yazabilirsiniz:

#include

sabit karakter * benim adım ( ) {
karakter * isim = 'John' ;
geri dönmek isim;
}
int ana ( geçersiz ) {
printf ( '%S' , benim adım ( ) ) ;
}

Çıktı


Değişkenler, yukarıdaki ifadenin gerçek nedeni olan yığında varsayılan olarak tahsis edilir. Bununla birlikte, bir işaretçi bildirildiğinde, işaret ettiği değer, işlev bittikten sonra temizlenmeyen öbek üzerinde tahsis edilir. Bellek tahsis edildikten sonra, dosyanın bir kopyası sicim işaretçi tarafından gösterilen orijinal bellek konumundan oluşturulması ve kopyanın çağrılan işlevden döndürülmesi gerekir. Çağıran işlev daha sonra orijinal dizi verileri üzerinde kontrole sahip olurken, çağrılan işlev ayrılan alanı boşaltmaktan sorumludur.

Çözüm

A C işlevi bir işaretçi alabilir sicim argüman olarak ve döndür sicim çağrılan fonksiyon içerisinde gerçekleştirilen işlemler sonucunda elde edilen değerdir. Bunu başarma yaklaşımı, bir char* işaretçisi kullanmaktır. Çağıran işlev, depolamak için ayrılan bellekten sorumlu olacaktır. sicim , çağrılan işlev ayrılan alanı boşaltmaktan sorumludur.