请各位高人帮我分析一下这个程序嘛!小弟感激不尽!

来源:百度知道 编辑:UC知道 时间:2024/06/01 05:12:58
#include<iostream.h>
int main()
{
int m[5],n[5],*px,*py,k;
px=m;
py=n;
for(k=1;k<4;k++,px++,py++)
{
*px=k;
*py=2*k;
cout<<m[k-1]<<'\0'<<n[k-1]<<endl;
}
px=&m[1];
py=&n[1];
for(k=1;k<3;k++)
{
*px+=k;
*py*=k;
cout<<*px++<<'\0'<<*py++<<endl;
}
return 0;
}
这道题的输出结果为什么会是:
1 2
2 4
3 6
5 12
(我完全没有看懂啊......)
***************
夕阳_dapro大哥:
我的意思是:为什么会有数字出现,能不能详细讲一下第一个循环啊!!!万分感谢哈!!!!!

看来你对指针还不熟...仔细去看看指针部分.很容易的..

是C++吧。
px=m;py=n;//先把两个数组的首地址赋值给两个指针
再看第一个for循环
for(k=1;k<4;k++,px++,py++)
{
*px=k;
*py=2*k;
cout<<m[k-1]<<'\0'<<n[k-1]<<endl;
}
循环到k=3时结束,数组中m和n的0、1、2被赋值
输出了m[0]、m[1]、n[0]、n[1]即为1、2和2、4

px=&m[1];
py=&n[1]; //然后由重新赋值,把m[1]、n[1]的地址赋值给指针px、py.
for(k=1;k<3;k++)
{
*px+=k;
*py*=k;
cout<<*px++<<'\0'<<*py++<<endl;
}
再循环,只是有点复杂,要用到前一次循环的m[1]=2和n[1]=4。k=2时结束,数组m[1]、m[2]和n[1]、n[2]被重新赋值。要注意的是:*px+=k的意思为*px=*px+k;*py*=k的意思是*py=*py*k。对于cout<<*px++<<'\0'<<*py++<<endl中,*px++和*py++是先输出*px和*py在自己加1.
在好好看看,并不难……