İşaretçiler kullanılarak en iyi hangi programlama sorunları çözülür? [kapalı]


58

Temel olarak, işaretçilerin nasıl kullanılacağını anladım, ancak daha iyi programlama yapmak için bunları nasıl kullanabileceğimizi en iyi şekilde anlayamadım.

İşaretçilerin kullanılmasını içeren ve daha iyi anlayabilmem için çözülecek iyi projeler veya sorunlar nelerdir?


Hangi programlama sorununu, hangi projelerin / programların değil, işaretçiler kullanılarak çözüleceğini sorun. İşaretçiler kullanarak ya da değil kullanarak bir program yazabilirsiniz - onlar (projeler) anlamlı bir cevap için çok büyük bir yapıdır.
Oded

37
Programlama sorunları, çözülmeyen işaretçiler kullanılarak yaratılır. :)
xpda

4
Aslında, hangi sorunların işaretçi olmadan çözülebileceğini merak ediyorum. Çok az kesin.
deadalnix 11:11

4
@deadalnix, açık işaretçiler mi yoksa örtülü işaretçiler mi demek istediğinize bağlıdır. Örtülü işaretçilerden bahsediyorsanız (yani, bir yerde kullanılan işaretçiler var), yığını veya yığını kullanan herhangi bir program yazmak mümkün olmaz. Açık işaretçilerden bahsediyorsanız, sınırsızsınız demektir, derleyiciden uzaklaştıklarını varsayarak, yeni yığın çerçeveleri (temelde bir işlev çağrısı kullanarak) ve kuyruk çağrılarını kullanarak serbest bırakma yaparak istediğiniz miktarda tahsisat yapabilirsiniz.
dan_waterworth 12:11

3
Ah, bu cevapların bazıları berbat.

Yanıtlar:


68

Bellekteki büyük miktarda veriyi değiştirmek, işaretçilerin gerçekten parladığı yerdir.

Büyük bir nesneyi referans olarak iletmek, sadece eski bir sayı boyunca geçmeye eşdeğerdir. İhtiyaç duyulan parçaları, bir nesneyi kopyalamak yerine, değiştirerek, ardından orijinalin yerine konacak kopyayı geri göndermenin yerine doğrudan değiştirebilirsiniz.


12
Bu harika bir cevap ve büyük miktarda veriyi işlemek için büyük nesnelere ihtiyacınız olmadığını da ekleyeceğim; bazen büyük cisimleri manipüle etmek bunu yapacak, fakat daha da yaygın olan bir problem, bir çok küçük cismi gerçekten çok sık manipüle etmektir. Bunun hakkında düşünürseniz, hemen hemen tüm bilgisayar programlarıyla ilgilidir.
jhocking

44

İşaretçi konsepti, veri deposunu çoğaltmadan adrese verilere başvurmanızı sağlar. Bu yaklaşım, aşağıdaki gibi verimli algoritmalar yazmanıza izin verir:

  1. Sıralama
    Verileri bir sıralama algoritmasında taşırken işaretçiyi verilerin yerine hareket ettirebilirsiniz - 100 karakterlik bir dizide milyonlarca satırı sıralamayı düşünün; gereksiz veri hareketlerinden tasarruf edersiniz.

  2. Bağlantılı listeler Kayıtla
    ilişkili verilerin tümünü değil bir sonraki ve / veya önceki öğe konumunu saklayabilirsiniz.

  3. Parametrelerin geçirilmesi
    Bu durumda, verilerin yerine verilerin adresini iletin. Yine, milyonlarca satır üzerinde çalışan bir ad sıkıştırma algoritması düşünün.

Kavram, bir işaretçinin yabancı bir anahtara benzer olduğu ilişkisel veritabanları gibi veri yapılarına genişletilebilir . Bazı diller C # ve COBOL gibi işaretçilerin kullanımını desteklemez.

Örnekler, birçok yerde bulunabilir:

Aşağıdaki posta bir şekilde alakalı olabilir:


14
C # 'nın işaretçi kullanımını desteklemediğini söyleyemem; bunun yerine, yönetilmeyen işaretçilerin kullanımını teşvik etmiyor - C # 'da değer yerine referansla dolaşan birçok şey var.
Blakomen

Güzel, iyi bir açıklama
Sabby 12:11

5
C # yorum için oy kullanmak zorunda kaldı. C # "referansları" işaretçilere eşittir, sadece C # sizi yönetilen yığındaki bir nesneye bir işaretçi ile gerçekten ilgilendiğinizi bilmekten uzaklaştırır.
MattDavey 12:11

1
@MattDavey: C # referansları imleç değildir. Onlardan ekleyemezsiniz, bir dizini indekslemek için kullanamazsınız, çoklu dolaylı kullanmaları vs. kullanabilirsiniz. Örneğin referanslara referans alamazsınız.
Billy ONeal 13:11

5
@Billy ONeal açıkçası "bunun üzerinde aritmetik yapabilirseniz sadece bir işaretçi" olduğu iddiası açıkçası gülünçtür, ancak sizinle tartışacak sabrım yok.
MattDavey 14:11

29

Başka hiçbir cevabın bundan bahsetmediğine şaşırdım: işaretçiler, bitişik olmayan ve doğrusal olmayan veri yapıları oluşturmanıza olanak tanır; burada bir öğe, diğerleriyle karmaşık şekillerde ilişkili olabilir.

Bağlantılı listeler (tek tek, iki kat ve dairesel olarak bağlanmış), ağaçlar (kırmızı-siyah, AVL, trie, ikili, alan bölümleme…) ve grafikler, sadece değerler yerine en doğal olarak referanslar ile oluşturulabilecek yapı örnekleridir. .


XOR bağlantılı listesini unutuyorsunuz [=
dan_waterworth 12:11

@ dan_waterworth: Hayır. Bu kara büyüyü çok iyi biliyorum.
Jon Purdy

8

Basit bir yol Polimorfizmdir. Polimorfizm sadece işaretçilerle çalışır.

Ayrıca, dinamik bellek ayırma ihtiyacınız olduğunda işaretçileri kullanırsınız. C'de, bu genellikle bir diziye veri kaydetmeniz gerektiğinde ancak derleme zamanında boyutunu bilmediğinizde olur. Daha sonra, belleği ve erişmek için bir işaretçi tahsis etmek için malloc'u çağırırsınız. Ayrıca, bilseniz de bilmeseniz de, bir dizi kullanırken imleç kullanıyorsunuzdur.

for(int i = 0; i < size; i++)
   std::cout << array[i];

eşdeğeri

for(int i = 0; i < size; i++)
   std::cout << *(array + i);

Bu bilgi, bir dizinin tamamını bir satırda kopyalamak gibi gerçekten harika şeyler yapmanızı sağlar:

while( (*array1++ = *array2++) != '\0')

C ++ 'da, bir nesneye bellek ayırmak ve onu bir işaretçiye depolamak için yeni kullanın. Bunu, derleme zamanı yerine çalışma zamanı sırasında bir nesne oluşturmanız gerektiğinde yaparsınız (yani, bir yöntem yeni bir nesne oluşturur ve onu bir listeye kaydeder).

İşaretçileri daha iyi anlamak için:

  1. Geleneksel c-string'ler ve dizilerle uğraşan bazı projeler bulun.
  2. Miras kullanan bazı projeler bulun.

  3. İşte dişlerimi kestiğim proje:

Bir dosyadan iki nxn matrisi okuyun ve üzerlerindeki temel vektör uzay işlemlerini yapın ve sonuçlarını ekrana yazdırın.

Bunu yapmak için, iki dizi dizisine (çok boyutlu dinamik diziler) sahip olacağınız için dinamik dizileri kullanmanız ve işaretçilerinize dizilerinize başvurmanız gerekir. Bu projeyi bitirdikten sonra, işaretçilerin nasıl kullanılacağı konusunda oldukça iyi bir fikre sahip olacaksınız.


2
"Polimorfizm sadece işaretçilerle çalışır." Doğru değil: polimorfizm aynı zamanda referanslarla da çalışır. Sonuçta, işaretçiler, ancak ayrımın özellikle yeniler için önemli olduğunu düşünüyorum.
Laurent Pireyn 11:11

bir diziyi bir satırda kopyalamak için örnek, gerçekten herhangi bir genel diziyi değil, bir satırda sıfırlanmış bir dizeyi kopyalamak içindir.
tcrosley 12:11

8

İşaretçilerin neden önemli olduğunu gerçekten anlamak için yığın ayırma ve yığın ayırma arasındaki farkı anlamanız gerekir.

Bir yığın tahsisi örneği aşağıda verilmektedir:

struct Foo {
  int bar, baz
};

void foo(void) {
  struct Foo f;
}

Yığına ayrılan nesneler yalnızca geçerli fonksiyon yürütme süresince var olur. Çağrı fookapsam dışına çıktığında değişken de öyle f.

Bunun bir sorun haline geldiği durumlardan biri, bir fonksiyondan integral bir türden başka bir şey döndürmeniz gerektiği zamandır (örneğin yukarıdaki örnekten Foo yapısı).

Örneğin, aşağıdaki işlev "tanımsız davranış" olarak adlandırılır.

struct Foo {
  int bar, baz
};

struct Foo *foo(void) {
  struct Foo f;
  return &f;
}

struct Foo *Bir fonksiyondan benzer bir şey döndürmek istiyorsanız, gerçekten ihtiyacınız olan şey bir yığın tahsisidir:

struct Foo {
  int bar, baz
};

struct Foo *foo(void) {
  return malloc(sizeof(struct Foo));
}

İşlev mallocöbek üzerinde bir nesne atar ve o nesneye bir işaretçi döndürür. Burada "nesne" teriminin gevşek bir şekilde kullanıldığını, nesne yönelimli programlama anlamında nesne yerine "bir şey" anlamına geldiğini unutmayın.

Yığınla ayrılmış nesnelerin ömrü programlayıcı tarafından kontrol edilir. Bu nesnenin hafızası, programlayıcı onu serbest bırakana kadar, yani çağrı yaparak free()veya program çıkana kadar saklanır .

Düzenleme : Bu sorunun C ++ sorusu olarak etiketlendiğini fark etmedim. C ++ operatörleri newve new[]aynı işlevi gerçekleştirir malloc. Operatörler deleteve delete[]benzer free. İken newve delete++ nesneleri ayırmak ve serbest C münhasıran kullanılması gerektiğini, kullanılması mallocve freeC ++ kodunda tamamen yasal.


1
(+1) ayrıca "statik tahsis edilmiş değişkenler" ve "dinamik tahsis edilmiş değişkenler" olarak da bilinir ;-)
umlcat

4

Önemsiz olmayan herhangi bir projeyi C'ye yazdığınızda, işaretçilerin nasıl / ne zaman kullanılacağını belirlemeniz gerekecektir. C ++ 'da, imleçleri dahili olarak yöneten RAII etkin nesneler kullanırsınız, ancak C raw işaretçilerde çok daha yaygın bir rol vardır. Ne tür bir proje yapmanız gerektiğine gelince, önemsiz bir şey olabilir:

  • Küçük ve basit bir web sunucusu
  • Unix komut satırı araçları (daha az, kedi, sıralama vb.)
  • Sadece öğrenmek için değil, kendi iyiliği için yapmak istediğin bazı gerçek projeler.

Sonuncuyu tavsiye ederim.


Yani sadece yapmak istediğim bir projeye gidiyorum (2B oyun gibi) ve işaretçilere ihtiyacım olacak ve öğrenmem gerekecek mi?
dysoco 11:11

3
Tecrübelerime göre, ustalık seviyenizin biraz altında olan gerçek projeleri yapmak, öğrenmenin en iyi yoludur. Küçük "oyuncak" programları okuyup yazarak kavramlar öğrenilebilir. Ancak, daha iyi programlar yazmak için bu kavramları nasıl kullanabileceğinizi gerçekten öğrenmek için, sadece oyuncak olmayan programlar yazmanız gerekir.
Viktor Dahl,

3

İşaretçilerle çözülebilen hemen hemen tüm programlama problemleri diğer daha güvenli referans tipleri ile çözülebilir ( C ++ referanslarına atıfta bulunmaz , ancak değişkene sahip olan genel CS kavramı, başka bir yerde saklanan verilerin değerini ifade eder).

İşaretleyicileri doğrudan bellek adreslerini doğrudan değiştirebileceğiniz, referansların belirli bir alt düzey uygulaması olarak işaretçiler çok güçlüdür, ancak kullanımı biraz tehlikelidir (örneğin, programın dışındaki bellek konumlarını işaret edin).

İşaretçileri doğrudan kullanmanın faydası, güvenlik kontrolleri yapmak zorunda kalmayacaklarından biraz daha hızlı olmalarıdır. Java tarzı işaretleyicileri doğrudan uygulamayan Java gibi diller hafif bir performans çarpışmasına neden olur, ancak hata ayıklaması zor olan birçok türü azaltır.

Neden dolaylı olarak ihtiyaç duyulduğuna gelince, liste oldukça uzundur, fakat esasen iki ana fikir:

  1. Büyük nesnelerin kopyalanma değerleri yavaştır ve nesnenin iki kez (potansiyel olarak çok maliyetli) RAM'de saklanmasını sağlar, ancak referansla kopyalamak, yalnızca birkaç bayt RAM (adres için) kullanılarak anında yapılır. Örneğin, bellekte ~ 1000 büyük nesne (her biri yaklaşık 1 MB RAM olmak üzere) olduğunu ve kullanıcınızın geçerli nesneyi (kullanıcı tarafından uygulanacak) seçebilmesi gerekir. selected_objectNesnelerden birine referans olan bir değişkene sahip olmak , geçerli nesnenin değerini yeni bir değişkene kopyalamaktan çok daha etkilidir.
  2. Veri yapısındaki her bir öğenin veri yapısındaki diğer öğelere gönderme yaptığı, bağlantılı listeler veya ağaçlar gibi diğer nesnelere gönderme yapan karmaşık veri yapılarına sahip olmak. Veri yapısındaki diğer öğelere atıfta bulunmanın yararı, listenin ortasına yeni bir öğe eklediğiniz için listedeki her öğeyi belleğe taşımak zorunda kalmayacağınız anlamına gelir (sabit zaman ekleri olabilir).

2

Piksel düzeyinde görüntü işleme, işaretçiler kullanılarak hemen hemen her zaman daha kolay ve daha hızlıdır. Bazen sadece işaretçiler kullanılarak mümkündür.


1
"Bazen sadece işaretçileri kullanmak mümkündür" ifadesinin doğru olduğunu sanmıyorum. İşaretçileri geliştiriciye açıklamayan diller var, ancak aynı alandaki sorunları çözmek için de kullanılabilirler.
Thomas Owens

Belki de ... Kullanılabilir tüm diller hakkında bilgim yok, ancak kesinlikle işaretçi olmayan bir dil kullanarak bir görüntüye bir evrişim filtresi uygulamak için bir rutin yazmak istemem.
Dave Nay

@Tomas, siz haklıyken, soru, göstericileri geliştiriciye maruz bırakan c ++ ile ilgilidir.
Jonathan Henson

@Jonathan Öyle olsa bile, bir sorunu işaretçiler göstermeyen bir dilde çözebiliyorsanız, işaretçisi kullanmadan işaretçileri ortaya çıkaran bir dilde bu sorunu çözmek de mümkündür. Bu ilk cümleyi doğrular, ancak ikinci cümle yanlıştır - (benim bildiğim kadarıyla) işaretçiler kullanılmadan çözülemeyen hiçbir sorun yoktur.
Thomas Owens

1
Aksine, görüntü işleme genellikle “koordinat aritmetiği” içerir - örneğin, bir açının sinüsünü ve kosinüsünü alıp onu x ve y koordinatlarıyla çarparak söyleyin. Diğer durumlarda, sarar veya sınır ötesi piksel çoğaltması gerekir. Bu anlamda, işaretçi aritmetik oldukça yetersizdir.
rwong

1

İşaretçiler, kullanıcıyı rahatsız etmeden yüzeyin altındaki pek çok programlama dilinde kullanılır. C / C ++ sadece onlara erişebilmenizi sağlar.

Ne zaman kullanmalı: Mümkün olduğu kadar sık, çünkü veri kopyalamak yetersizdir. Ne zaman kullanmamalısınız: İstediğiniz zaman değiştirilebilen iki kopya istediğinizde. (Object_1 içeriğini bellekteki başka bir yere kopyalamak ve bir işaretçi döndürmek temelde ne yapacak?


1

İşaretçiler, C'deki veri yapısı uygulamasının önemli bir parçasıdır ve veri yapıları önemsiz olmayan programların önemli bir parçasıdır.

İşaretçilerin neden bu kadar hayati olduğunu öğrenmek istiyorsanız, bağlantılı listenin ne olduğunu öğrenmeyi ve işaretçi kullanmadan yazmayı denemeyi öneririm. Sana imkansız bir zorluk koymadım, (HINT: işaretçiler bellekteki konumlara referans vermek için kullanılır, dizilerdeki şeylere nasıl referans verirsiniz?).


Veri yapılarından bahsetmek için +1, algoritmalarda kullanım doğal bir sonuçtur.
Matthieu M.

0

Gerçek hayattan bir örnek olarak, bir limit emir defteri oluşturmak.

Örneğin, ITCH 4.1 beslemesi, fiyatların (ve dolayısıyla önceliğin) değişebileceği "değiştirme" emirlerine sahiptir. Emirleri almak ve başka bir yere taşımak mümkün. İşaretçilerle çift uçlu bir sıra uygulamak, işlemi çok kolaylaştırır.


0

Çeşitli StackExchange sitelerini inceleyerek, bunun gibi bir soru sormanın oldukça moda olduğunun farkındayım. Eleştiri ve düşürme riski altında dürüst olacağım. Bu trol veya alev anlamına gelmez, sadece dürüst bir değerlendirme yaparak, yardım etmek istiyorum.

Ve bu değerlendirme şu şekildedir: Bu bir C programcısı sormak için çok garip bir soru. Söylediği tek şey "C bilmiyorum". Eğer biraz daha ve alaycı bir şekilde analiz edersem, bu "soruya" yönelik bir izlemenin alt tonu vardır: "Tecrübeli bir C programcısının bilgisini çabucak ve aniden elde etmek için herhangi bir zaman ayırmadan alabileceğim bir kısayol var mı?" bağımsız çalışma için mi? " Birinin verebileceği herhangi bir "cevap", altta yatan kavramı ve kullanımını anlama adımını gidip yapmak yerine geçemez.

C'yi iyi öğrenmenin, ilk elden, web’de gitmekten ve insanlara bunu sormaktan daha yapıcı olduğunu hissediyorum. C'yi iyi bildiğiniz zaman, böyle sorular sormakta zahmet etmeyeceksiniz, "Diş fırçası kullanarak hangi problemlerin en iyi şekilde çözüldüğünü" sormak gibi bir şey olur.


0

İşaretçiler, büyük bellek nesneleriyle çalışırken gerçekten parlasa da, aynısını onlarsız yapmanın bir yolu var.

İşaretçi, dinamik programlama için kesinlikle gereklidir , programınız çalıştırılmadan önce ne kadar hafızaya ihtiyacınız olacağını bilmediğinizdedir. Dinamik programlamada, çalışma sırasında hafıza parçalarını isteyebilir ve kendi verilerinizi bunlara yerleştirebilirsiniz - bu yüzden bu veri gruplarıyla çalışabilmek için işaretçiye veya referanslara (burada önemli değildir) ihtiyacınız vardır.

Çalışma sırasında belirli bir hafıza talep edebildiğiniz ve verilerinizi yeni edinilmiş hafızaya yerleştirdiğiniz sürece, aşağıdakileri yapabilirsiniz:

  1. Kendiliğinden genişleyen veri yapılarına sahip olabilirsiniz. Bunlar, kapasiteleri tükendiği sürece ek hafıza talep ederek kendilerini uzatabilecek yapılardır. Her bir kendi kendine genişleyen yapının temel özelliği, küçük bellek bloklarından (yapıya bağlı olarak adlandırılan düğümler, liste öğeleri vb.) Oluşması ve her blok diğer bloklara referanslar içermesidir. Bu "bağlantılı" yapılar modern veri türlerinin çoğunu oluşturur: grafikler, ağaçlar, listeler vs.

  2. OOP (Nesneye Yönelik Programlama) paradigmasını kullanarak programlayabilirsiniz. Tüm OOP, doğrudan değişkenler değil, sınıf örneklerine referanslar (nesneler olarak adlandırılır) ve bunları manipüle etmeye dayanır. İşaretçiler olmadan tek bir örnek olamaz (işaretçiler olmadan bile yalnızca statik sınıfları kullanmak mümkün olsa da, bu bir istisnadır).


0

Komik, C ++ ile ilgili bir soruyu cevapladım ve işaretçilerden bahsettim.

Kısa versiyon, 1) kullandığınız kütüphanenin size zorlamadığı sürece, asla işaretçilere gerek duymazsınız.

Bir diziye, listeye, dizeye vs. ihtiyacınız varsa, sadece yığında bulundurun ve bir stl nesnesi kullanın. Stl nesnelerinin döndürülmesi veya iletilmesi hızlıdır (denetlenmeyen gerçek) çünkü nesnenin yerine imleci kopyalayan dahili kod vardır ve sadece eğer yazarsanız verileri kopyalarlar. Bu, normal C ++ kitaplığı yazanlar için kolaylaştıracak yeni C ++ 11 bile değil.

Sorunuz bu bölümde cevaplanmış olabilir

Bir işaretçi kullanıyorsanız, bu iki durumdan birinde olduğundan emin olun. 1) Null olabilecek bir girişi geçiyorsunuz. Örnek isteğe bağlı bir dosya adıdır. 2) Sahipliği geri vermek istiyorsan. İşaretçiyi geçirir veya geri verirseniz olduğu gibi, geri kalan HİÇBİR kopyasına sahip olmazsınız veya verdiğiniz işaretçiyi kullanmazsınız.

ptr=blah; func(ptr); //never use ptr again for here on out.

Ancak çok uzun süredir işaretçiler veya akıllı işaretçiler kullanmıyorum ve uygulamamı belirledim. Çok hızlı çalışıyor.

EK NOT: Kendi yapılarımı yazdığımı ve etrafımı geçirdiğimi fark ettim. Peki, işaretçiler kullanmadan nasıl yaparım? Bir STL kabı değil, bu nedenle ref ile geçmek yavaş. Veri listemi / deques / maps'i her zaman yüklerim. Bir tür liste / harita olmadığı sürece herhangi bir nesneyi döndürmeyi hatırlamıyorum. Bir dize bile değil. Tek nesneler için koda baktım ve bunun gibi bir şey yaptığımı fark ettim, bu { MyStruct v; func(v, someinput); ... } void func(MyStruct&v, const D&someinput) { fillV; }yüzden hemen hemen nesneleri (çoklu) geri döndürdüm ya da doldurmak için tek bir başvuruda bulundum.

Şimdi kendi yazdığınız yazı, harita vb. İşaretçiler kullanmanız gerekir. Fakat buna gerek yok. STL olsun ve muhtemelen bu konuda endişelenmesini artırmak. Sadece veri ve çözümler yazmanız gerekir. Onları tutmak için kaplar değil;)

Umarım şimdi asla işaretçiler kullanmazsınız: D. Sizi zorlayan liblerle uğraşırken iyi şanslar


0

İşaretçiler, bellek eşlemeli cihazlarla çalışmak için çok faydalıdır. Bir kontrol kaydını yansıtan (örneğin) bir yapı tanımlayabilir, ardından bellekteki gerçek kontrol kaydının adresine atayabilir ve doğrudan işleyebilirsiniz. MMU sistem belleği alanına eşlediyse, doğrudan kart veya çip üzerindeki bir aktarma arabelleğine de işaret edebilirsiniz.


0

İşaretçileri işaret parmağım olarak görüyorum, birkaç şey yapmak için kullanıyoruz:

  1. Birisi sizden, taşıyamayacağınız bir şey sorduğunda, sokakların nerde olduğu gibi, ben de bu caddeye “işaret ederdim” ve bu, referans olarak tartışma durumunda yaptığımız şeydir.
  2. Bir şeyi sayırken ya da bir şeyden geçerken aynı parmağı kullanırdık ve dizilerde yaptığımız şey budur.

lütfen bu zayıf cevabı affet


0

Sorunuz C ++ etiketli olduğundan, bu dil için sorunuza cevap vereceğim.

C ++ 'da işaretçiler ve referanslar arasında bir ayrım vardır, bu nedenle belirli davranışları kolaylaştırmak için işaretçilerin (veya akıllı işaretçilerin) gerekli olduğu iki senaryo vardır. Başka durumlarda da kullanılabilirler, ancak "bunları en iyi şekilde nasıl kullanabileceğinizi" soruyorsunuz ve diğer tüm durumlarda daha iyi alternatifler var.

1. Polimorfizm

Temel sınıf işaretçisi, işaretçinin işaret ettiği nesne türüne bağlı olan sanal bir yöntemi çağırmanıza olanak tanır.

2. Kalıcı nesneler oluşturma

Dinamik olarak bir nesne oluştururken işaretçiler gereklidir (yığın yerine öbek üzerinde). Bu, nesnelerin ömrünün, oluşturulduğu kapsamdan daha uzun olmasını istediğinizde gereklidir.

“İyi projeler ya da çözülecek sorunlar” açısından, diğerleri burada daha önce de söylediği gibi, önemsiz olmayan herhangi bir proje göstericileri kullanacaktır.


Belki birileri işaretçi kullanmak yerine nesneyi kesmeyi tercih eder. Mutlu hata ayıklama: D
deadalnix 13:11
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.