问个关于基础C++的问题

来源:百度知道 编辑:UC知道 时间:2024/05/24 13:09:06
这有一个数组
A{1,2,3,4,5}

我们用P代表最中间的那个元素(即3,也是A[2]),当我把A[0]和A[2]调换之后,P还是代表最中间的元素(即新的A[2]),但这不是我期望的,我期望P继续代表原来的A[2]并且随之换位。举例,如果把A[0]和A[2]换位之后,P=A[0]...

如果不采用指针,请问有什么办法做到?谢谢。

我也不知道你想干什么?

是不是我的思维太简单了
你要交换A[0]和A[2]:
int swaptemp = 0;
int p_index = 2;

P=A[p_index];

swaptemp=A[0];
A[0]=A[2];
A[2]=swaptemp;
p_index=0;

p=A[p_index];

如你所愿没有指针,连引用都不用
不知道对不对
谢谢

取地址
#include <stdio.h>
void main()
{
int a[5] = {1,2,3,4,5};
int *p = &a[2];
int tmp = a[0];
a[0] = a[2];
a[2] = tmp;
printf("p = %d", a[2]);

}

我就搞不懂了 楼主你要干什么,你所指的调换A[0]与A[2]实际上不过是A[0]和A[2]各自的值进行修改吧了。 如果你用指针的话,你不直接修改指针的值,指针是不会移动的,如果你用变量的话,变量本身也不过是存个值,你要变动也需要修改。至于引用也没办法做到你所说的。没有新的A[2],只有A[2]的新值。

int a[] = {1, 2, 3, 4, 5};
int &P = a[2];
int* A[] = {a+0, a+1, a+2, a+3, a+4};

cout<<P<<endl;
int *t = A[0];
A[0] = A[2];
A[2] = t;
cout<<P<<endl;