请解释这个基于指针和字符串的程序的输出?

Please explain the output of this program based on pointers and strings?

#include<iostream.h>
#include<conio.h>
void main()
{
int Track[]={10,20,30,40},*Striker;
Striker=Track;
Track[1]+=30;
cout<<"Striker >"<<*Striker<<endl;
*Striker-=10;
Striker++;
cout<<"Next @"<<*Striker<<endl;
Striker+=2;
cout<<"Last @"<<*Striker<<endl;
cout<<"Reset To"<<Track[0]<<endl;
getch();
}

程序的输出是 前锋 > 10 下一个 @ 50 最后@ 40 重置为 0

请解释一下这个输出结果program.Would对提前解决类似问题problems.Thanks有很大帮助

逐行解释:

Striker=Track;

设置Striker指向Track的内存,所以Striker[0]等于Track[0]。

Track[1]+=30;

将 Track 的第二个索引的值增加 30 (Track[1] = 50)。

cout<<"Striker >"<<*Striker<<endl;

*Striker与Striker[0]相同,*Striker+1与Striker[1]相同,依此类推。这行的输出是 "Striker > 10" 因为 Striker[0] = Track[0] = 10.

*Striker-=10;

将 Striker 的第一个索引的值减少 10 (Striker[0] = 0)。

Striker++;

增加Striker指针,所以现在Striker指向Track+1 (Striker[0]=Track[1], Striker[1]=Track[2], ...)。

cout<<"Next @"<<*Striker<<endl;

输出 "Next @50" 因为 Striker[0]=Track[1]=50.

Striker+=2;

增加前锋 2 指数。现在 Striker=Track+3.

cout<<"Last @"<<*Striker<<endl;

输出"Last @40"因为Striker[0]的值等于Track[3]的值。

cout<<"Reset To"<<Track[0]<<endl;

输出 "Reset To 0" 因为当 Striker[0] 减少时 Track[0] 变为 0 (*Striker-=10)。

本教程中解释了所有这些指针操作: http://www.cplusplus.com/doc/tutorial/pointers/