C ve C++'da Memmove()

C Ve C Da Memmove



Bugün C ve C++ dilinin önemli fonksiyonlarından biri olan memmove() fonksiyonunu öğreneceğiz. Ama ondan önce, C ve C++ dillerinin temellerine hızlıca bir göz atalım. Her iki C/C++ dilinde de hangi işlevlerin olduğunu tartışacağız.

C programlama dili her amaç için kolay ve oldukça etkilidir. Windows işletim sistemi, Veritabanları, Tercümanlar ve diğer araçlar gibi yazılımların uygulanması bununla mümkündür. C, yeni başlayanlar için kodlamayı öğrenmek için harika bir dildir. Bu nedenle C programlama, diğer tüm bilgisayar dillerinin temelini oluşturduğu için ana dil olarak bilinir. C++ programlama dilinin temeli, nesne yönelimli programlama (OOP) fikirlerine dayanmaktadır. C++ anlaşılır bir yapıya sahip olduğu için kullanıcı programın ilkelerini kolayca geliştirebilir ve kavrayabilir. C\C++ programlama dili, birden çok işlevi gerçekleştirmede ve bir değişkeni bir türden diğerine değiştirmede son derece çok yönlüdür. memmove() işlevi, C/C++ işlevlerinden biridir.







memmove() işlevi, kaynak tarafından belirtilen bellek bloğunun içeriğinden hedef tarafından belirtilen konuma doğru 'num' baytlarını eşzamanlı olarak aktarır. memmove() işlevi, yalnızca kaynak ve hedef nesneler çakıştığında faydalıdır ve tanımsız davranışın oluşmasını durdurur. memmove() işlevi hakkında daha fazla bilgi edinmek için, derinlere inelim ve memmove() işlevinde sözdizimini ve örnekleri nasıl uygulayacağımızı görelim.



Sözdizimi:

Burada hem C hem de C++ dilleri için aynı yazma stili ve memmove() işlevinin uygulanması yer almaktadır. İlk olarak “void” anahtar kelimesini yazıyoruz, yani fonksiyon herhangi bir değer döndürmezse, uygulamak istediğimiz fonksiyonun adını yani memmove() fonksiyonunu yazıyoruz. Fonksiyon parantezlerinin içine ise “void” anahtar kelimesi ile “num” byte’ları yerleştirebileceğimiz hedefi yazıyoruz. Ardından, “num” baytları aldığımız kaynak konumu yazıyoruz.







parametreler:

el: Verilerin kopyalandığı depolama konumunun adresi.

kaynak: Verilerin kopyalandığı depolama konumunun adresi.



saymak: Kaynaktan hedefe kopyalanacak veri miktarı.

Geri dönüş değeri:

Karşılığında ise hedef bellek alanının adresini alıyoruz. Hedef, memmove() işlevi tarafından döndürülür.

Örnek 1: Memmove() İşlevinin C'de Uygulanması

C dilinin ilk ve basit örneğimizi uygulamaya başlayalım. Yazmaya başlamak için, programı yazıp çalıştırabilmemiz için önce bir C derleyicisine ihtiyacımız var. Bunun için C derleyicisini açın ve programı uygulamaya başlayın.

#include
#include

int ana ( )
{
char ch1 [ ] = { 'L' , 'i' , 'n' , 'içinde' , 'x' } ;

int uzunluk = sizeof ( ch1 ) / boyutu ( ch1 [ 0 ] ) ;

printf ( 'memmove() işlevini uygulamadan önce: ' ) ;
için ( int i = 0 ; i < uzunluk; ben++ )
{
printf ( '%c' , kanal1 [ i ] ) ;
}

karakter * kanal2 = & ch1 [ iki ] ;
hatıra ( ch2, ch1, sizeof ( karakter ) * iki ) ;

printf ( ' \n \n memmove() işlevini uyguladıktan sonra: ' ) ;

için ( int i = 0 ; i < 5 ; ben++ )
{
printf ( '%c ' , kanal1 [ i ] ) ;
}
dönüş 0 ;

}


Derleyiciyi başlattıktan sonra her zaman çekirdek program modüllerini dahil ederek başlarız. Bu modüller, paketlenmiş C dili modülleridir. Modülü oluşturmak için düzinelerce kod satırı yerine, bu modülleri dahil etmek için tek bir kod satırı yazmamız yeterlidir. “#” göstergesi, çevirmene modülü programa eklemek için “include” anahtar kelimesini kullanmadan önce modülü yüklemesini bildirir. “stdio.h” modülü, derleyicinin kullanıcıdan gelen verileri kabul etmesi ve kullanıcıya göstermesi anlamına gelir. Programın ikinci modülü “#include ” dir ki mevcut programda string ile ilgili fonksiyonları kullanabiliriz.

Ardından, programda uygulamak istediğimiz asıl kod satırını yazabilmemiz için main() işlevini başlatıyoruz. 6. satırda, karakter tipinin karakter dizisi adını 'ch1' olarak bildiririz. Daha sonra ona bir karakter değeri atadık. Bundan sonra, 'ch1' uzunluğunu hesaplıyoruz ve 'for döngüsü' kullanarak 'ch1' giriş dizisini yazdırıyoruz.

Daha sonra bir tip karakterin “ch2” dizisine pointer bildiriyoruz ve “ch1” dizisinin adresini “ch2” dizisine atayacağız. Ardından, printf() deyimini kullanarak yazdırıyoruz. Önceki çizimin çıktısını görelim:

Örnek 2: C++'da Memmove() İşlevinin Gerçeklenmesi

İşte memmove() işlevinin C++ dilinde nasıl çalıştığını gösteren temel örnek. Yazmaya başlamak için, programı yazıp çalıştırabilmemiz için önce bir C++ IDE'ye ihtiyacımız var. Bunun için C++ derleyicisini açın ve programı uygulamaya başlayın.

Derleyiciyi açtıktan sonra, her zaman programların çalışması için C++ programlama dili için gerekli olan başlık dosyalarını dahil ederek başlarız. Programı oluşturmak ve memmove() yöntemini kullanmak için önce iki temel başlık dosyasını - 'iostream' ve 'cstring' dahil ediyoruz. C++, diziler ve dizelerle çalışmak için çeşitli yollar sağlar. Bu işlevler, başlık dosyası, kaynaktan hedefe belirli sayıda bayt veri kopyalamak için kullanılan '#include  ' başlık dosyasına sahip bir programa dahil edildiğinde kullanıma sunulur. '#include '  başlık dosyası, kullanıcıdan gelen verilerin hem girişi hem de çıkışı için kullanılır. Ardından, C++ programlama dilinin standart sözdizimini kullanmak için kodumuzdaki standart 'namespace std'yi kullanırız, böylece nesnelerin, yöntemlerin ve parametrelerin tüm program boyunca aynı kapsama başvurmasını engelleyebiliriz.

#include
#include
ad alanı std kullanarak;

int ana ( )
{
karakter kaynağı [ elli ] = '1234567890' ;
karakter hedefi [ elli ] = '0987654321' ;

cout << 'Memmove'u Hedefe Uygulamadan Önce: ' << Başlat << son;
hatıra ( hedef kaynak, 6 ) ;
cout << 'Hedefe memmove uygulandıktan sonra: ' << eller

dönüş 0 ;
}


Gerçek bir kod satırının yürütülmesini başlatmak için main() işlevini yazmaya başlıyoruz. 7. satırda “kaynak[50]” ve “hedef[50]” olarak tanımlanan 50 uzunluğunda iki karakterli bir dizi vardır. “Memmove()'u Hedefe Uygulamadan Önce:” mesajını yazdırmak için “cout” ifadesini kullanıyoruz. Daha sonra “dest” dizisinin değerini yazdırmak için “dest” parametresini geçiyoruz. Ardından, 'src[50]' ve 'dest[50]' olarak bildirilen karakter tipi değişkenine memmove() işlevi, kaynaktan(kaynak) hedef(hedef)'e kadar belirli sayıda baytı üst üste bindirmek için uygulanır. 'sayım' sayısı. Bu, “src”den “dest”e kopyalanan bayt sayısını tanımlar. Aşağıdaki çizimde de görebileceğiniz gibi “6” sayım sayısını bildirdik.

Ardından tekrar “cout” deyimini kullanarak “Memmove() to Destination:”a Uygulandıktan Sonra mesajını ekrana getiriyoruz ve “character” tipindeki “dest” dizi değişkenini geçiriyoruz. Programın çalışmasını durdurmak için programın sonunda bir dönüş ifadesi kullanmalıyız. Ardından, programın başarıyla yürütüldüğünü ve amacına ulaştığını belirten ana işleve 0 döndürürüz.

Memmove() yönteminin aşağıdaki çıktısında, çakışma varsa örneğin ilk işaretçi 6 harfine hareket ettiğinde işaretçinin yazdırmaya devam ettiğini ve sonraki karakterlerin üst üste geleceğini görebilirsiniz. Bu C++ kod parçacığı çalıştırıldı ve sonuçlar aşağıdaki resimde gösteriliyor:

Çözüm

Bu yazımızda C ve C++ programlama dillerinde memmove() fonksiyonunu öğrendik. C ve C++ örneği üzerinden memmove() fonksiyonunun nasıl çalıştığından ve her kod satırının detaylı anlatımından bahsettik. Bu makalenin, C ve C++'daki memmove() işleviyle ilgili bilginizi geliştirmenize yardımcı olacağını umuyoruz.