PDA

View Full Version : مبتدی: سوال در مورد تعریف متغیر



Mr.Programmer
دوشنبه 30 بهمن 1391, 16:19 عصر
سلام دوستان
خسته نباشید
سوالی در مورد نوع تعریف متغیر داشتم

میخواستم بدونم مثلا ما یک متغیر را اینطوری تعریف میکنیم :

char *a;
این الان یعنی چی ؟؟؟؟ چه فرقی با char بدون ستاره داره ؟؟؟؟ دقیقا چه کاری انجام میده ؟ آرایه درست میشه ؟
و مزیت استفاده از اشاره گر ها چیست ؟؟؟


خیلی ممنونم

sr2m72
دوشنبه 30 بهمن 1391, 16:25 عصر
سلام دوستان
خسته نباشید
سوالی در مورد نوع تعریف متغیر داشتم

میخواستم بدونم مثلا ما یک متغیر را اینطوری تعریف میکنیم :

char *a;
این الان یعنی چی ؟؟؟؟ چه فرقی با char بدون ستاره داره ؟؟؟؟ دقیقا چه کاری انجام میده ؟ آرایه درست میشه ؟
و مزیت استفاده از اشاره گر ها چیست ؟؟؟


خیلی ممنونم

با سلام.
الان يك اشاره گر به نام a از نوع char تعريف كرديد. يعني a ميتونه به متغيري از نوع char اشاره كنه!
char بدون ستاره فقط ميتونه يك مقدار كاراكتري بگيره درصورتي كه char با ستاره(اشاره گر) آدرس يك متغير از نوع char رو نگه مي داره!

موفق باشيد!

Mr.Programmer
دوشنبه 30 بهمن 1391, 16:45 عصر
با سلام.
الان يك اشاره گر به نام a از نوع char تعريف كرديد. يعني a ميتونه به متغيري از نوع char اشاره كنه!
char بدون ستاره فقط ميتونه يك مقدار كاراكتري بگيره درصورتي كه char با ستاره(اشاره گر) آدرس يك متغير از نوع char رو نگه مي داره!

موفق باشيد!
خیلی ممنون
گفتید که char بدون ستاره میتونه فقط یک مقدار کاراکتری بگیره
حالا اگه char اشاره گر باشه چه مقدار داده میتونه ذخیره کنه ؟؟؟ ظرفیتش چقدر میشه - من شنیدم اینطوری که تعریف میکنیم آرایه میشه ... درسته ؟؟
برای نوع های دیگه مثل int و float هم همینطور هست ؟؟؟

متشکرم

sr2m72
دوشنبه 30 بهمن 1391, 17:16 عصر
خیلی ممنون
گفتید که char بدون ستاره میتونه فقط یک مقدار کاراکتری بگیره
حالا اگه char اشاره گر باشه چه مقدار داده میتونه ذخیره کنه ؟؟؟ ظرفیتش چقدر میشه - من شنیدم اینطوری که تعریف میکنیم آرایه میشه ... درسته ؟؟
برای نوع های دیگه مثل int و float هم همینطور هست ؟؟؟

متشکرم

گفتم كه اگر char اشاره گر باشه ميتونه آدرس يك متغير از نوع char رو درون خودش نگه داره و چون آدرس ها در حافظه 2بايتي هستند ظرفيت اشاره گر ها هم 2بايتي هست.
آرايه كه نميشه. ولي ميشه براي كار با رشته ها ازش استفاده كرد كه شبيه به آرايه ها ميشه.
يه مثال ميزنم كه بهتر متوجه بشي:
اين رو در نظر بگيريد:

char *a="Computer";

در اينجا Computer رو درون حافظه قرار ميده و اشاره گر a آدرس اولين كاراكتر، يعني C رو درون خودش نگه ميداره!
در اين صورت شبيه به آرايه ميشه(آرايه اي از كاراكتر ها) كه فقط در نوع داده اي char اينطوري هست و در بقيه نوع هاي داده اي اينگونه نيست!

developing
چهارشنبه 02 اسفند 1391, 10:57 صبح
با سلام

بله آرایه می شه.

در واقع آرایه ها در زبان c, cpp یک اشاره گر هستند و این اشاره گر آدرس شروع آرایه رو در خودش نگه می داره.

وقتی آرایه ای از نویسه ها رو تعریف می کنید در واقع یک رشته رو تعریف کردید و انتهای این نوع رشته ها در c, cpp با نویسه ی تهی(0\) معین می گردد و محدودیتی از لحاظ اندازه البته در تئوری ندارند. چرا در تئوری چون در تئوری انتهای یک رشته با نویسه ی تهی معین می گردد پس تا زمانی که شما این کاراکتر رو به کار نبرید می تونید رشته قرار دهید. اما در عمل با محدودیت های سخت افزاری، نرم افزاری، مدیریتی و ... مواجه خواهید شد.

در ضمن آدرس های حافظه هم بستگی داره به نوع سخت افزار و سیستم عامل شما در سیستم عامل داس که 16 بیتی هست آدرس حافظه 2 بایته اما در سیستم عامل 32 بیتی آدرس ها 4 و در سیستم عامل 64 بیتی آدرس ها 8 بایتی هستند.