İşaretçiler ile Değişkenleri Değiştirme
Coddy'nin C Journey'sinin Mantık & Akış bölümünün bir parçası. Ders 27 / 63.
Artık işaretçilerin gerçek gücünden yararlanabilirsiniz: bir işlev aracılığıyla özgün değişkeni değiştirmek. Bir işlev’e işaretçi ilettiğinizde, işlev bu bellek adresinde depolanan değeri değiştirmek için başvuruyu kaldırma işleci’ni kullanabilir.
İşlevin içinde, özgün değişkenin değerine erişmek ve bu değeri değiştirmek için işaretçinin başvurusunu * operatörünü kullanarak kaldırırsın. Bu teknik, değişkenin bellekteki konumuna bir başvuru aktardığın için başvuru yoluyla geçirme olarak adlandırılır.
void doubleValue(int *ptr) {
*ptr = *ptr * 2; // Dereference to modify the original value
}
int main() {
int x = 5;
doubleValue(&x); // x'in adresini geç
// x artık 10!
return 0;
}Anahtar, işaretçinin tuttuğu bellek adresindeki değeri değiştirmek için atamanın sol tarafında *ptr kullanmaktır. Bu, işlevlerin çağıran işlevdeki değişkenleri kalıcı olarak değiştirmesine olanak tanır ve değerle geçişin tek başına gerçekleştiremeyeceği güçlü programlama olanaklarının önünü açar.
Görev
KolayBir tamsayının değerini üç katına çıkaran bir işlev oluşturarak işaretçiler aracılığıyla değişkenlerin değiştirilmesini gösteren bir C programı yazın.
Programınız şunları yapmalıdır:
- Parametre olarak bir tamsayıya işaretçi alan,
tripleValueadlı bir işlev oluşturun tripleValueişlevinin içinde, bellek adresindeki değeri 3 ile çarpmak için başvuru kaldırma işleci kullanıntripleValueişlevinin içinde, yeni değeri şu biçimde yazdırın:Value tripled to: [value]mainişlevinde,numberadlı bir tamsayı değişkeni tanımlayın ve 8 değeriyle başlatın- Özgün değeri şu biçimde yazdırın:
Original value: [value] tripleValueişlevini çağırın ve adres alma işleciylenumberdeğişkeninin adresini geçirin- İşlev çağrısından sonra,
numberdeğişkeninin son değerini şu biçimde yazdırın:Final value: [value]
Çıktınız, işlevin işaretçi aracılığıyla özgün değişkeni başarıyla değiştirdiğini göstermelidir:
Original value: 8
Value tripled to: 24
Final value: 24Bu meydan okuma, işaretçiler kullanılarak başvuru ile geçirmenin gücünü gösterir; işlev, işaretçinin başvurusunu kaldırarak ve ilgili bellek konumundaki değeri değiştirerek özgün değişkeni kalıcı olarak değiştirebilir.
Kendin dene
#include <stdio.h>
// TODO: tripleValue fonksiyonunuzu buraya yazın
int main() {
// TODO: Kodunuzu buraya yazın
// number değişkenini tanımlayın ve başlatın
// Print the original value
// tripleValue fonksiyonunu çağırın
// Son değeri yazdırın
return 0;
}Bu ders kısa bir quiz içerir. Soruları yanıtlamak ve ilerlemeni kaydetmek için derse başla.
Mantık & Akış bölümündeki tüm dersler
1Pointer Temelleri
Pointer Nedir?Pointer TanımlamaAdres Operatörü (&)Dereference Operatörü (*)NULL Pointer'larÖzet: Pointer Temelleri4Proje: Basit Metin Aracı
Projeye Genel BakışKarakter Sayma2İşaretçiler ve Diziler
İşaretçi Olarak Dizi İsimleriDizi Elemanları - İşaretçilerİşaretçi Aritmetiğiİşaretçilerin KarşılaştırılmasıÖzet: İşaretçi ile Dizi Gezinme5İşaretçiler ve Fonksiyonlar
Değer ile GeçmeFonksiyonlara İşaretçi Göndermeİşaretçiler ile Değişkenleri DeğiştirmeKlasik Bir Örnek: SwapFonksiyonlara Dizi GöndermeÖzet: Fonksiyon İşaretçi Argümanları8Yapılar ve İşaretçiler
Yapılara İşaretçilerOk Operatörü (->)Yapıları Değer ile AktarmaYapı İşaretçilerini AktarmaYapıların Dinamik TahsisiÖzet: Yapıyı Değiştirme - Ptr11Son Tekrar Görevleri
Tekrar: Dinamik String BirleştirmeTekrar: Struct DizisiTekrar: Kelime Frekans Sayacı3Karakter Dizileri ve Stringler
char Dizisi Olarak StringlerNull Sonlandırıcıscanf ile String Girişistrlen() Kullanımıstrcpy() Kullanımıstrcat() Kullanımıstrcmp() KullanımıÖzet: Temel String FonksiyonlarıKendi başına pratik yap: Online C derleyicisi