【发布时间】:2013-08-05 07:17:21
【问题描述】:
我使用下面的程序来交换矩形结构的长宽
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->) 将成员变量的地址传递给函数。谁能解释一下?
【问题讨论】:
-
如果你省略
&s,它甚至不会编译... -
即使编译时带有大量警告,它也会导致分段错误。查看整数值的地址。
-
你用的是什么编译器?你在写 C 还是 C++? AFAIK“cout”不是 C 输入/输出命令
-
我正在使用 C++ 编译器。它正在编译而没有任何警告并给出正确的结果。这就是为什么我感到困惑并提出这个问题。
-
@user2652117 我很好奇你现在用的是哪个编译器……
标签: c++ function pointers structure