Я использовал следующую программу для перекачки длины и шириной структуры прямоугольникаПередача указателя на член структуры к функции
typedef struct rectangle
{
int len;
int wid;
} rect;
void swap(int* a, int * b)
{
int temp;
temp= *a;
*a=*b;
*b=temp;
}
int main()
{
rect rect1;
rect *r1;
r1= &rect1;
r1->len=10;
r1->wid=5;
cout<< "area of rect " << r1->len * r1->wid<<endl;
swap(&r1->len,&r1->wid);
cout<< "length=" << rect1.len<<endl;
cout<<"width=" <<rect1.wid;
}
Однако, когда я использую следующий:
swap(r1->len,r1->wid);
вместо:
swap(&r1->len,&r1->wid);
Я до сих пор получаю правильные результаты, и я не знаю, как это работает. Для моего понимания я должен использовать (&r1->)
, чтобы передать адрес переменной-члена функции. Может кто-нибудь объяснить?
Если вы опустили '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' ', оно даже не компилируется ... –
Даже если он скомпилирован с множеством предупреждений, он должен привести к Сегментации fault.looking по адресу, который является целым значением. –
Какой компилятор вы используете? Вы пишете C или C++? AFAIK «cout» не является командой ввода/вывода C – verbose