PDA

View Full Version : سوال: چرا در سی پلاس پلاس برای دریافت مقدار حتما باید آدرس به کار ببریم؟



complexcoding
جمعه 16 تیر 1391, 17:46 عصر
دوستان سلام
در سی شارپ برای تعریف متغیر نه از اشاره گر استفاده می کردیم و نه از آدرس اما در سی پلاس پلاس برای دریافت مقدار حتما باید آدرس به کار ببریم؟ به این مثال توجه کنید:

int a;
scanf (" %d ", &a);

در واقع ما به عنوان ورودی عدد می دهیم در صورتی که a& در scanf از ما آدرس می خواهد؟
پیشاپیش ممنون

pe32_64
جمعه 16 تیر 1391, 17:53 عصر
این موضوع مربوط به تابع scanf است.
بخشی از قدرت این زبان به خاطر اشاره گرها(آدرس )است.
در این زبان و اینجا این تابع برای اینکه مقدار متغییر و بتونه تغییر بده(با مقدار خونده شده ست کنه)،از آدرسش استفاده کرده.
در سی شارپ اشاره گر به این صورت نیست و از دید شما پنهانه ولی وجود داره.
اشاره گر خیلی هم مفیده!

مسعود اقدسی فام
جمعه 16 تیر 1391, 22:42 عصر
دوستان سلام
در سی شارپ برای تعریف متغیر نه از اشاره گر استفاده می کردیم و نه از آدرس اما در سی پلاس پلاس برای دریافت مقدار حتما باید آدرس به کار ببریم؟ به این مثال توجه کنید:

int a;
scanf (" %d ", &a);

در واقع ما به عنوان ورودی عدد می دهیم در صورتی که a& در scanf از ما آدرس می خواهد؟
پیشاپیش ممنون

زمانی که قراره مقدار a داخل تابع scanf تغییر کنه (متناسب با ورودی کاربر) نمی‌شه از انتقال با مقدار (By Value) استفاده کرد که فقط یه کپی از مقدار a رو برای تابع ارسال می‌کنه. باید آدرسش به تابع ارسال بشه تا تابع بتونه از طریق آدرس محل متغیر محتوای اون رو عوض کنه.

در ضمن scanf از C به ++C ارث رسیده. خود ++C از cin و cout استفاده می‌کنه که با اشاره‌گر کار نمی‌کنن.


cin >> a;

Hossenbor
دوشنبه 19 تیر 1391, 10:24 صبح
دوست عزیز شاید شنیده باشی کامپیوتر احمقه بلا نسبت همه این هم بخاطر همون چونکه کامپیوتر نمیدونه چطور با مقادیر دریافتی کار کنه برای همین بصورت دستی بهش میفهمونیم