黑马程序员技术交流社区

标题: 关于for循环的一个疑问,大神们帮忙看看啊 [打印本页]

作者: 迎着太阳    时间: 2014-12-21 23:20
标题: 关于for循环的一个疑问,大神们帮忙看看啊
假如array是一个数组,length是数组的长度:
for(int i = 0;i < length;i++)
{
    array[i]=array[i+1];
}
这种把后一个元素赋值给前一个元素可以吗?
作者: 诺诺    时间: 2014-12-21 23:35
没理解,但是角标越界了吧?{:3_46:}
作者: 王溢君    时间: 2014-12-21 23:44
可不可以,你运行一下,不就行了吗?不要什么事都首先想到的是问,应该想到先自己动手解决,自己思考。你这样写,会报错。
作者: 迎着太阳    时间: 2014-12-21 23:49
诺诺 发表于 2014-12-21 23:35
没理解,但是角标越界了吧?

:L,多谢提醒,竟然没发现,汗哪
作者: 迎着太阳    时间: 2014-12-21 23:50
王溢君 发表于 2014-12-21 23:44
可不可以,你运行一下,不就行了吗?不要什么事都首先想到的是问,应该想到先自己动手解决,自己思考。你这 ...

哎,目前还没有准备笔记本
作者: 从今以后    时间: 2014-12-22 00:00
可以是可以,不过array[0]值会丢失,最后i = length - 1时array[i + 1] == array[length]会越界
作者: xiezhongmin    时间: 2014-12-24 02:18
不但角标会越界,而且这个方法根本就是错的,就算给你假如角标不会越界又有什么用,你的思路就是 a=b ,结果a的值变了,b的值呢?这个程序需要中间变量来实现,代码:#include <stdio.h>
void huhuan (int arrye[],int count);

int main (void)
{
        int ages[] = {2,4,6,8,10};
     huhuan (ages,5);
         for (int j = 0; j<sizeof(ages)/ sizeof(int); j++)
         {
                 printf ("ages[%d]=%d\n",j,ages[j]);
         }

        return 0;
}

void huhuan (int arrye[],int count)
{
   int i,n;
   
   for (i=0; i<count-1; i++)
   {
       n = arrye[i];
       arrye[i]=arrye[i+1];
           arrye[i+1]=n;

   }

}
作者: 迎着太阳    时间: 2014-12-24 16:06
xiezhongmin 发表于 2014-12-24 02:18
不但角标会越界,而且这个方法根本就是错的,就算给你假如角标不会越界又有什么用,你的思路就是 a=b ,结果 ...

这位同学,非常感谢你的指正。我想明白了。:)




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2