من یک قطعه کد مثل زیر دارم:
#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* میده.
چرا کد اولی با اینکه آرگومانها توسط عملگر & فرستاده نشده بودند، درست بود؟