PDA

View Full Version : سوال: فرق struct و typedef struct



feri88
چهارشنبه 06 خرداد 1388, 18:46 عصر
سلام
میشه بگین فرق این دو نوع تعریف ساختار چیه؟

struct MyStruct{
BYTE *pbparam1;
DWORD cbparam1;
BYTE *pbparam2;
DWORD cbparam2;
}*mystruct;

typedef struct {
BYTE *pbparam1;
DWORD cbparam1;
BYTE *pbparam2;
DWORD cbparam2;
}MyStruct;


و موارد کاربرد و مزیت هر کدوم چیه؟
چون من توی کدهای ویندوزی و هدر فایل های مربوط به اونها، دیدم که معمولاً از شکل دوم تعریف استفاده میشه!
مرسی

tdkhakpur
چهارشنبه 06 خرداد 1388, 19:03 عصر
سلام
میتونیم بگیم برای راحتی کار و تعریف متغییر برای ساختار های ذیل مور استفاده قرار میگیره.

struct MyStruct{
BYTE *pbparam1;
DWORD cbparam1;
BYTE *pbparam2;
DWORD cbparam2;
}*mystruct;

در قسمت فوق شما اگه بخوایید برای ساختار فوق یه متغییر تعریف کنید باید بصورت یالا و یا به حالت زیر تعریف کنید.


struct MyStruct *mystruct;


typedef struct MyStruct_{
BYTE *pbparam1;
DWORD cbparam1;
BYTE *pbparam2;
DWORD cbparam2;
}MyStruct;

ولی با تعریف typedef شما به ساختار انواع اسامی رو میتونید بدید یعنی بصورت زیر


typedef struct MyStruct_ MyStruct, MyStruct2, MyStruct3;
در این حالت نیازی به استفاده از کلمه کلیدیstruct در جاهایی که میخواهید یک متغییر برای ساختار تعریف کنید نیست


MyStruct s;
MyStruct2 s1;
MyStruct3 s2;
متغیرهای s, s1, s2 همگی از یک نوع ساختار هستند.