[英]Why wouldn't this program change anything, but the one below it does?
我正在为即将进行的考试研究C ++的指针,但我不知道为什么这里的第一个代码不交换值,而第二个代码却交换了值。 如果有人可以向我解释为什么那会很棒。
为什么该程序不交换b [0]和b [1]的值:
#include <iostream>
using namespace std;
void func1 (int* x, int *y)
{
int* temp = x;
x = y;
y = temp;
}
int main()
{
int b[6] = { 1, 2, 3, 4, 5, 6};
func1(&b[0], &b[1]);
cout << b[0] << b[1];
}
但是这个做:
#include <iostream>
using namespace std;
void func2(int* x, int *y)
{
int temp = *x;
*x = *b;
*y = temp;
}
int main()
{
int b[6] = { 1, 2, 3, 4, 5, 6};
func2(&b[0], &b[1]);
cout << b[0] << b[1];
}
谢谢你:D
解释是,在第一种情况下,您交换的是指向值的指针,而不是指向的值本身。 因此,在第一种情况下您要操纵地址,而在第二种情况下要操纵值。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.