2016-04-10 9 views
-2

Daha önce bir veri yapısı adı düğüm oluşturmuş olsaydım, o zaman bir int değişkeni ve başka bir düğümün adresini saklamak için bir işaretçi ile bir veri yapısı oluşturduğum anlamına gelir. Ama o zaman neden yerine düğüm *start, temp, temp1 ait düğüm *start, *temp olarak temp, temp1 ve start, *temp1 ilan edilir? temp ve temp1 gibiC'deki bağlantı listesinde yapı türüne işaretçi olarak düğüm oluşturmanın kullanımı?

geçici "DÜĞÜM" olarak program ve o iş yapmak olmamalı düğüm yapısı için işaretçi olarak açıklanmadan daha sonra kullanılır, ancak bu düğüm *temp ve *temp1 çalışır. Niye ya? Kısaca

neden bu temp ve temp1 işaretçiler yerine düğüm temp, temp1 arasında yapı olarak ilan ve neden (yani düğüm *temp, *temp1) çalışan?

+1

Nasıl kullanıldığına bağlı olarak değişir. Düğümü gerçekten kopyalamanız gerekiyorsa, haklısınız demektir, işaretçiler yerine düğümlere ihtiyacınız olacaktır. Ancak, düğümlere geçici olarak işaretçilere ihtiyaç duymanız daha olasıdır, bu durumda beyanlar tam olarak olması gereken şeydir. Ancak kodu görmeden, sadece tahmin edebiliriz. –

+0

* Yardım merkezi * 'de * sorulması gereken * bölümünün * ilgili minified doğrulanabilir * parçasını kaçırıyorsunuz ve bu nedenle sorunuza bir bağlam vermek çok zordur. – Wtower

cevap

0

Varsayım/Tahmin'e dayanarak, Sorunuzda herhangi bir kod bulunmadığından. senin bu gibi Bağlantı Listesini, oluşturuyorsanız bir örnek için

,

struct node { 
    int value; 
    struct node *link; 
}; 

Eğer struct node temp, temp2 kullanıyorsanız o zaman tüm üyesinin bellek boyutunda eşit bellek boyutu ile iki yapı değişkeni temp ve temp2 yaratır Eğer struct node *temp, *temp2 kullanıyorsanız int + struct node *

olan yapı o zaman struct node değişkene işaret edebilir iki işaretçiler oluşturur. Daha az bellek, işaretçinin yalnızca bellek konumuna işaret etmesi gerektiği için tüketir.

struct node start; 
start.value = 10; 
start.link = 2000; //hypothetically for example, address should be in hex 
struct node temp = start; 
temp.value = 20; // Will change only value to 20 for temp variable only 

sizin gibi yapıyoruz Yani eğer

ardından start tüm üyenin değerleri temp uzvu içinde kopyalanacak. start ve temp değişken için ayrı bellek.

Ve gibi yapıyorsun,

struct node start; 
start.value = 10; 
start.link = 2000; 
struct node *temp = &start; 
temp->value = 20; //Will change value to 20 for both temp and start. As temp is pointer not a separate variable. 

sonra temp start konuma işaretçi değişken puandır.

İlgili konular