作业帮 > 综合 > 作业

#includeusing namespace std;

来源:学生作业帮 编辑:搜狗做题网作业帮 分类:综合作业 时间:2024/04/29 03:21:54
#includeusing namespace std;
void f(int a,int *b,int &c,int*& d)
{
a = 1;
*b = 2;
c = 3;
*d = 4;
}
int main()
{\x05int a = 0;
\x05int *b = &a;
\x05int &c = a;
\x05int *&d = b;
\x05f(a,b,c,d);
\x05cout
#includeusing namespace std;
我告诉你吧,你在主函数里的操作导致4个变量同时指向了同一块内存空间,而你的f函数只能修改第4个实参d,所以当d改变的时候,和b指向同一空间的其他3实参都变了
再问: 调试过了,
//void f(int a,int &c)
//void f(int a,int *b)
//void f(int a,int *b, int &c)
除了a,其他(b,c,d)都可以一起修改4个值,并且b和d内存中的地址是一样的。。。但是原理不是很理解,,,
再答: 1首先你要明白你主函数的操作使abcd现在指向的是同一块空间,
2在C++中指针和引用都可以通过形参改变实参的值,
3所以你在f中用bcd都可以改变实参的值,
4注意:实参abcd用的是同一快空间,一个值改变,指向该内存的所有变量的值都会改变
你在看不懂我也没办法了,你好好理解应该没问题