游戏开发论坛

 找回密码
 立即注册
搜索
查看: 2634|回复: 4

学习C++只为完成一个“成就”不为钱途,初学遇难题,真

[复制链接]

4

主题

6

帖子

6

积分

新手上路

Rank: 1

积分
6
发表于 2009-2-24 10:02:00 | 显示全部楼层 |阅读模式
void move(int *array,int n,int m)             //使循环后移一次的函数
{int *p,array_end;
  array_end=*(array+n-1);
  for (p=array+n-1;p>array;p--)
    *p=*(p-1);
  *array=array_end;
  m--;
  if (m>0) move(array,n,m); //递归调用,当循环次数m减至为0时,停止调用

第一行我的理解:定义一个名为MOVE的函数,里面有一个指针变量array为整形,变量n为整形,变量m为整型
第2行我的理解:定义一个指针变量P为整型,array_end我就糊涂了,是不是数组名,从哪里能看出?
第3行我的理解:array_end是个数组名,然后把指针array+n-1的值赋给这个数组首元素?
第4行循环条件,第5,6,7,8行我都不理解了
请老师指点,另外我江苏苏北的,城市信息落后,交流困难,最好能有附近的老师能教我!

0

主题

7

帖子

7

积分

新手上路

Rank: 1

积分
7
发表于 2009-2-24 13:15:00 | 显示全部楼层

Re:学习C++只为完成一个“成就”不为钱途,初学遇难题,

int *p,array_end; /*定义整形指针p,整形array_end*/
array_end=*(array+n-1);

array+n-1  array是该数组的首地址,array+n-1则为该数组的第n个数的地址
array_end=*(array+n-1) 取出array数组的第n个数

for (p=array+n-1;p>array;p--)
    *p=*(p-1);
将数向后移一位
*array=array_end; 将第n位的数放到第一位位

4

主题

6

帖子

6

积分

新手上路

Rank: 1

积分
6
 楼主| 发表于 2009-2-24 14:07:00 | 显示全部楼层

Re:学习C++只为完成一个“成就”不为钱途,初学遇难题,

array+n-1  array是该数组的首地址,array+n-1则为该数组的第n个数的地址
怎么看出array是数组的首地址的呢~前面形参int *array是一个指向整形的指针,array_end是一个整形,到下面怎么就跟数组联系上了呢???

0

主题

7

帖子

7

积分

新手上路

Rank: 1

积分
7
发表于 2009-2-24 15:36:00 | 显示全部楼层

Re:学习C++只为完成一个“成就”不为钱途,初学遇难题,

void do(int *array,int n,int m);

int a[32];  
...
do(a,n,m);

a 等价于 &a[0]
-------------------
对不起,自己基础不扎实,不懂怎么表达...

2

主题

28

帖子

28

积分

注册会员

Rank: 2

积分
28
发表于 2009-2-24 21:30:00 | 显示全部楼层

Re:学习C++只为完成一个“成就”不为钱途,初学遇难题,

用VC调试单步跟踪就知道怎么回事了。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

作品发布|文章投稿|广告合作|关于本站|游戏开发论坛 ( 闽ICP备17032699号-3 )

GMT+8, 2026-1-20 06:54

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表