اولین بار است که به این وب‌سایت می‌آیید. راهنما را مطالعه کنید!
x
موسسه خیریه محک

شهر ریاضی بازی-ریاضی

فرق تعریف تابع با آرگومان‌های از نوع اشاره‌گر و آرگومان‌های از نوع ارجاع چیه؟

+2 امتیاز
425 نمایش

من یک قطعه کد مثل زیر دارم:


#include <iostream>
using namespace std; void swap(int *a, int *b) {
int temp = *a;
*a = *b;
*b = temp;
}
int main() {
int a;
int b;
a = 7;
b = 5;
swap(a,b);
cout <<a<<b;
return 0;
}

همونطور که انتظار میره، این برنامه عمل جابه‌جا کردن دو عدد رو انجام میده.
اما وقتی توسط دستورات زیر، از کاربر دو عدد را می‌خواهم:

int a;
int b;
cin >> a;
cin >> b;
swap(a,b);
cout <<a<<b;

کامپایلر پیغام خطایی در مورد تبدیل int به int* میده.
چرا کد اولی با اینکه آرگومان‌ها توسط عملگر & فرستاده نشده بودند، درست بود؟

برنامه‌ای که تست نشده کار نخواهد کرد (Stroustrup, Bjarne)
پرسیده شده یکشنبه ۲۸ آبان ۱۳۹۱ در C++ توسط CPP_Crawler3  
بازتگ شده چهارشنبه ۲۱ فروردین ۱۳۹۲ توسط admin

1 پاسخ

0 امتیاز
 
بهترین پاسخ

برنامه‌ی اول هم خطا میگیره!
وقتی بخواین یک اشاره‌گر رو به تابع بفرستین، درستش اینه که موقع فراخونی از & استفاده بشه.

پاسخ داده شده دوشنبه ۹ بهمن ۱۳۹۱ توسط CPP_Crawler4  
انتخاب شده شنبه ۱۸ خرداد ۱۳۹۲ توسط admin