C++ C++;指针和算术 #包括 使用名称空间std; int main(int argc,_TCHAR*argv[] { inta[10]={0,1,2,3,4,5,6,7,8,9}; int*aptr; aptr=&a[0]; a[2]=a[2]+3; a[3]=a[5]+a[4]; aptr++; (*aptr)--; (*(++aptr))++; cout
让我们回顾一下代码中的每个步骤:C++ C++;指针和算术 #包括 使用名称空间std; int main(int argc,_TCHAR*argv[] { inta[10]={0,1,2,3,4,5,6,7,8,9}; int*aptr; aptr=&a[0]; a[2]=a[2]+3; a[3]=a[5]+a[4]; aptr++; (*aptr)--; (*(++aptr))++; cout,c++,pointers,math,C++,Pointers,Math,让我们回顾一下代码中的每个步骤: #include <iostream> using namespace std; int main(int argc, _TCHAR* argv[]) { int a[10]={0,1,2,3,4,5,6,7,8,9}; int *aptr; aptr = &a[0]; a[2] = a[2] + 3; a[3] = a[5] + a[4]; aptr++; (*aptr)--;
#include <iostream>
using namespace std;
int main(int argc, _TCHAR* argv[])
{
int a[10]={0,1,2,3,4,5,6,7,8,9};
int *aptr;
aptr = &a[0];
a[2] = a[2] + 3;
a[3] = a[5] + a[4];
aptr++;
(*aptr)--;
(*(++aptr))++;
cout << a[1] << a[2] << a[3] << a[4] << *aptr << endl;
}
请注意,最后一行可能具有不同的行为,因为它包含后缀和前缀增量,但由于它们位于两个不同的值上,因此应该是安全的。int main(int argc,_TCHAR*argv[])
int a[10]={0,1,2,3,4,5,6,7,8,9}; //initial state of your array
int *aptr;
aptr = &a[0]; //pointer on the first element
a[2] = a[2] + 3; //a[2]=5 now
a[3] = a[5] + a[4]; //a[3]=9 now
aptr++; //pointer on the second element
(*aptr)--; //decrement the value pointed by the pointer: a[1]=0 now
(*(++aptr))++;
//first increment the pointer the increments the value pointed by the new pointer so a[2]=6 now
{
inta[10]={0,1,2,3,4,5,6,7,8,9};
//a是一个10整数的数组。
int*aptr;
//aptr是指向int的指针。
aptr=&a[0];
//aptr指向数组的第一个元素,即a[0]
a[2]=a[2]+3;
//将3添加到[2],即数组的第三个元素以获得“5”,并将其放回[2]中。
//所以‘a’是{0,1,5,3,4,5,6,7,8,9}
a[3]=a[5]+a[4];
//你取第六和第五个元素,把它们加起来,放到第四个元素里。
//所以‘a’是{0,1,5,9,4,5,6,7,8,9}
aptr++;
//aptr指针递增,因此现在它指向数组的第二个元素,即[1]。
(*aptr)--;
//首先解引用aptr指针以获取[1],然后将其递减。
//所以‘a’是{0,0,5,9,4,5,6,7,8,9}
(*(++aptr))++;
//aptr指针首先递增,因此现在它指向第三个元素,即a[2]。
//然后取消对aptr指针的引用,得到一个[2],该值随后递增。
//所以‘a’将是{0,0,6,9,4,5,6,7,8,9},aptr指向a[2]
库特
aptr
正在引用a[0]
int a[10]={0,1,2,3,4,5,6,7,8,9};
int *aptr;
aptr = &a[0];
移动aptr
对a[1]
a[2] = a[2] + 3;
// a[2] == 5
a[3] = a[5] + a[4];
// a[3] == 9
aptr++;
aptr
之前的*现在意味着您正在修改它引用的任何对象的值。因此aptr
指向a[1]
,我们将其值减少1。因此a[1]
等于0
(*aptr)--;
让我们把它分解。(++aptr)
意味着让我们把指针从a[1]
移动到a[2]
(*(++aptr))
现在说让我们关注aptr
的值。我们现在知道a[2]==5
。最后(*(+++aptr)+
说让该值增加1。所以a[2]==6
。请记住,*aptr
因此现在也等于6
(*(++aptr))++;
cout
(*(++aptr))++;
cout << a[1] << a[2] << a[3] << a[4] << *aptr << endl;