C dilinde oldukça yeni ve tüm işaretçilerle ilgili bazı sorunlar yaşıyorum. Bir hatayı bu şekilde olsun ve sadece cant anlamaktypedef struct pointer tanımı
typedef struct edgeitem
{
double weight;
}EDGE_ITEM, *pEDGE_ITEM; //also declaration of a pointer
/************ edge that includes a pointer to the edge item, next and prev ******/
typedef struct edge
{
pEDGE_ITEM *edge_item;
pEDGE *next; //pointer to next edge
pEDGE *prev; //pointer to prev edge
}EDGE, *pEDGE;
:
Bu kodu yazdım.edgeitem
ve edge
'un etiketler olduğunu ve struct edge *next
kullanabileceğimi biliyorum, ancak işaretçileri nasıl beyan ettim, böylece nasıl kullanamayacağım?
İşaretçim varsa * kullanmam gerekir mi?
pEDGE_ITEM *edge_item
//or
pEDGE_ITEM edge_item
Anlayamıyorum, bu bir işaretçidir, bu yüzden neden ekleyebilirim?
Ve son soru:*EDGE next
EDGE *next
ve sonuncusu: Yukarıda kullanıyorum varsa arasındaki fark ne ben ekliyorum eğer:
typedef struct edge_list
{
EDGE *head;
}EDGE_LIST;
olduğunu olarak aynı:
pEDGE head;
Genellikle typedef'in arkasındaki '*' harfini gizlemek yanlıştır. Sadece karışıklığa yol açabilir. Programcılar * şeyi daha hızlı okuyorlar. Aynı şey, #define AND &&, et cetera gibi diğer sözdizimi öğeleri için de geçerlidir. Kısacası: bunu yapma. – wildplasser