2017-06-01 21 views
6

, biz varsa: C dilinde

typedef int a[100]; 
typedef int b[200]; 

Sonra türleri a ve b eşdeğerdir? Bildiğim kadarıyla C, isim eşdeğeri, 'u kullanıyor ama ben çok kafam karıştı.

+1

Her birinde bunlardan birini deneyin… –

+0

@EugeneSh. Niye ya? * Aynı boyut * mutlaka * aynı tür * anlamına gelmez. typeof() '(desteklenen yerlerde) daha iyi bir fikir olurdu. – tofro

+2

@tofro * Farklı * boyut * zorunlu olarak * farklı tür anlamına gelir. –

cevap

9

Örneğinizde a, int[100] ve b türündeki takma addır ve int[200] türünde bir diğer addır. Bu iki tür, bir dizinin büyüklüğü türünün bir parçası olduğu ve farklı boyutların farklı türler anlamına geldiğinden eşdeğer değildir. İkinci satır, olsaydı

typedef int b[100];, a ve b eşdeğer olacaktır.

olarak bildiğim kadarıyla C iki yapı (veya birlik) halinde türleri tam olarak sahip A ve B, etiketlediğinizi adı eşdeğerlik

Yapılar ve sendikalar sözde anlamda yazıldığında kullanır Aynı vücut, hala farklı türler olarak kabul edilir. Bu nedenle, bir değişken struct A türüne sahipse, önce onu dönüştürmeden struct B atayın.

Bu, diğer adlar olan typedef s için doğru değil. Yani, typedef X a; typedef X b; iki typedef varsa, o zaman X, a ve b birbirinden ayırt edilemez.

+0

Çok teşekkür ederim. – DIMITRIOS

İlgili konular