PDA

View Full Version : سوال: struct ها



اوبالیت به بو
چهارشنبه 14 مرداد 1388, 21:48 عصر
سلام
دوستان من يكم همچين تو اين بحث مشكل دارم.

آيا struct ها همون مفهوم ركورد در پاسكال يا UDT در VB هستند؟
به عنوان مثال در VB به اين صورت كار مي كرديم:


Type Student
ID As Integer;
Address As String;
....
End Type
Dim st As Student

و بعد از اين فيلدها استفاده مي كرديم.
ولي اين ساختار رو در C++ من نفهميدم.

يه سوال ديگه آيا در struct ها حتماً بايد از Pointer ها استفاده كرد؟

اوبالیت به بو
چهارشنبه 14 مرداد 1388, 22:12 عصر
اينجوري نوشتم جواب داد:


struct Student{
int ID;
char Name[50];
}st;
int main()
{
cin>>st.ID;
}

درست هستش ان شالله ديگه؟

Max Payne
پنج شنبه 15 مرداد 1388, 05:11 صبح
سلام تا اونجايي كه سواد من قد ميده دستورش درسته
موردي نمي بينم، اين ساختاري كه شما نوشتي آسونترين نوعش هستش يه ساختارهاي تو در تو داريم كه آدم هنگ ميكنه :لبخند:
نه كي گفته بايد حتما استفاده كني ما ساختارهاي متفاوت داريم آرايه اي، نشانگري،...
حتي ميشه ساختاري رو از نوع خود ساختار تعريف كردش بهتره در اين مورد بحث نكنيم كه همون ساختار تو ساختار ميشه

Max Payne
پنج شنبه 15 مرداد 1388, 05:14 صبح
در ضمن اينو هم ميشه به صورت Public,Private نوشت
Public Type Student
Private Type Student
تو ويژوال بيسيك در همين حد هستش كسي زياد از اينا استفاده نميكنه
حالا تو سي و سي++ بحثش خيلي بيشتر هستش

Saeed_m_Farid
پنج شنبه 15 مرداد 1388, 09:43 صبح
سلام
دوستان من يكم همچين تو اين بحث مشكل دارم.

آيا struct ها همون مفهوم ركورد در پاسكال يا UDT در VB هستند؟
به عنوان مثال در VB به اين صورت كار مي كرديم:


Type Student
ID As Integer;
Address As String;
....
End Type
Dim st As Student
و بعد از اين فيلدها استفاده مي كرديم.
ولي اين ساختار رو در C++ من نفهميدم.

يه سوال ديگه آيا در struct ها حتماً بايد از Pointer ها استفاده كرد؟

سلام
نمیشه گفت دقیقاً همون record پاسکال یا Type وی بیِ، چون خیلی دستمون اینجا بازتره.
اینکه حتماً از اشاره گر تو ساختار استفاده کنیم، معلومه که اینطور نیست؛ ولی استانداردش اینه که برای هر ساختار یه نوعِ اشاره گر به اون ساختار هم داشته باشیم، چون بعداً خیلی تو استفاده از نوع ساختارمون کمک خواهد کرد.
من چند نوع ساختار رو تو کد پایین میارم، که نحوه استفاده شون واضح تر بشه :

/* نحوه عمومی تعریف ساختار در سی
struct [ struct-tag ] {
[ [ field-attribute-list ] ] type-specifier declarator-list;
...
}
*/

/* یه نمونه ساده از ساختار*/
struct TSIMPLE_ADDRESS
{
int userID;
char* name;
}addr_variable;

/* نحوه تعریف یک نوع :
این سینتکس برای استفاده بعدی لازم خواهد شد
برای همین آوردم تا با نحوه استفاده اش آشنا باشید
*/
typedef int word;

/* ساختاری که قرار است بعداً بعنوان زیرساختار ازش استفاده کنیم */
typedef struct _ADDRESS_TYPE{
char Contry[32];
char City[32];
char Avnu[32];
int Pelak;
__int64 PostalCode;
}ADDRESS_TYPE;

/* ساختار نهایی که قراره استفاده کنیم */
typedef struct _TUSER_PROPS{
int CityCode;
int ZoneCode;
int CenterCode;
char callerID[32];
ADDRESS_TYPE address;
}TUSER_PROPS, *PTUSER_PROPS;

/* برای راحت شدن کار استفاده میشه define */
#define CopyAddrMember(x, i, y) strcpy(completeInfos[i].address.x, y)

void func() {

/* مستقیم میشه از این متغیر استفاده کرد */
addr_variable.userID = 12345;
strcpy(addr_variable.name, "Mr. Saeed M. Farid");

/* نحوه تعریف متغیر از نوع ساختار معمولی */
struct TSIMPLE_ADDRESS friend; //

/* نمونه ای از متغیر آرایه ای از ساختار اصلی */

TUSER_PROPS completeInfos[100];
completeInfos[0].CityCode = 21;
completeInfos[0].ZoneCode = 222;
completeInfos[0].CenterCode = 12;
strcpy(completeInfos[0].callerID, "+982313333333");

CopyAddrMember(Contry, 0, "Iran");
CopyAddrMember(City, 0, "Tehran");
CopyAddrMember(Avnu, 0, "Unknown");
completeInfos[0].address.Pelak = 1212;
completeInfos[0].address.PostalCode = 33689745415;


/* نحوه تعریف و استفاده از نوع اشاره گر به ساختار*/
PUSER_PROPS pInfos;
pInfos->CityCode = 411;
//....

}
موفق باشید.