View Full Version : سوال: در این تکه کد ورودی و خروجی فایل ها چرا St اینگونه تعریف شده است؟
complexcoding
سه شنبه 20 تیر 1391, 13:12 عصر
با سلام
در این تکه کد ورودی و خروجی فایل ها چرا متغیر St اینگونه تعریف شده است؟
f1.write((char*)&st,sizeof(struct student));
(char*) یعنی چی؟
st& ؟
و (sizeof(struct student برای چیه؟
با تشکر
Ananas
سه شنبه 20 تیر 1391, 15:12 عصر
سلام.
(char*)
یعنی چی؟
اینجا اشاره گر به st که با &st مشخص میشه ممکنه از جنس اشاره گر به char نباشه که ما با نوشتن (char *) منظورمون رو صریحا اعلام میکنیم تا اشاره گر به st تبدیل بشه به اشاره گر به char و خطا نگیره.
Navid_QQQ
سه شنبه 20 تیر 1391, 16:14 عصر
در ادامه توضیحات دوست عزیز Ananas
sizeof(struct student)
سایز ساختار student رو به عنوان پارامتر می فرسته برای دوم .
برای اینکه کارکرد sizeof رو متوجه بشید این مثال رو اجرا کنید :
#include <iostream>
int main() {
std::cout << "sizeof(double) = " << sizeof(double);
std::cout << ", sizeof(char) = " << sizeof(char);
}
و این :
#include <stdio.h>
struct flexarray
{
char val;
char mychar;
};
int main(int argc, char **argv){
printf("sizeof(struct flexarray) = %zu\n", sizeof(struct flexarray));
return 0;
}
Ananas
سه شنبه 20 تیر 1391, 19:10 عصر
چرا از کلمه ی struct داخل پرانتز sizeof استفاده شده؟
Navid_QQQ
سه شنبه 20 تیر 1391, 22:54 عصر
چرا از کلمه ی struct داخل پرانتز sizeof استفاده شده؟
در سی استاندارد برخلاف سی پلاس پلاس وقتی شما یه ساختار تعیین می کنید . وقتی می خوایید به اون ساختار دست پیدا کنید باید از کلمه ی کلیدی struct استفاده کنید .
برای مثال :
struct student{
char a ;
};
برای ایجاد یک نمونه از این ساختار در سی-استاندارد:
struct student value;
در مورد عملگر sizeof هم به همین گونه هست :
sizeof(struct student);
ولی در مورد نمونه ی ساخته شده از ساختار میشه این کار رو کرد :
sizeof(myvalue);
در حالی که همون ساختار در سی پلاس پلاس می شه یه این طریق با عملگر sizeof استفاده کرد :
sizeof(student);
vBulletin® v4.2.5, Copyright ©2000-1404, Jelsoft Enterprises Ltd.