黑马程序员技术交流社区

标题: 数组和指针问题 [打印本页]

作者: 郑强强    时间: 2012-4-7 00:10
标题: 数组和指针问题
//逐步提升优化3


        public static void toHex_4(int num)
        {

                //定义一个临时容器。
                char[] arr=new char[8];//字符数组的默认初始化值'\u0000'代表空字符
                int pos=arr.length-1;//定义一个指针,此时指向的是一个空位
                char[] chs={'0','1','2','3',
                            '4','5','6','7',
                                    '8','9','A','B',
                                        'C','D','E','F'};

                while(num!=0)
                {
                        int temp=num&15;
                        //System.out.println(chs[temp]);
                        arr[--pos]=chs[temp];
                       
                        num=num>>>4;
                }
                System.out.println("pos="+pos);

        //存储数组遍历
                for (int x=pos;x<=arr.length ; x++)
                {
                        System.out.print(arr[x]+",");
                }
       
        }

毕老师讲了一大堆已经迷糊了,这个数组和指针到底是什么样的关系呢??编译时我没有出错,为什么我会有以下结果呢??大湿们,求解啊

9.JPG (31.28 KB, 下载次数: 51)

9.JPG

作者: 孙国军    时间: 2012-4-7 10:28
数组内存溢出

  //存储数组遍历
                 for (int x=pos;x<=arr.length ; x++)
                 {
                         System.out.print(arr[x]+",");     //这边可以去到arr[8],但是数组只有8个元素,只能取到arr[7]
                 }

作者: 郑强强    时间: 2012-4-7 10:35
guojun_sun 发表于 2012-4-7 10:28
数组内存溢出

  //存储数组遍历

但是毕老师运行的过程好像没有出错啊

作者: 孙国军    时间: 2012-4-7 10:37
那你在仔细看一看,你的代码,肯定有那边和毕老师写的不一样

作者: 朱鹏举    时间: 2012-4-7 13:26
出现了角标越界异常。
int pos=arr.length-1;//定义一个指针,此时指向的是一个空位
改为
int pos=arr.length;//定义一个指针,此时指向的是一个空位


  for (int x=pos;x<=arr.length ; x++)
改为
   for (int x=pos;x<arr.length ; x++)
就o了
传一个60
结果为
pos = 6
3,C,
作者: 郑强强    时间: 2012-4-7 13:45
朱鹏举 发表于 2012-4-7 13:26
出现了角标越界异常。
int pos=arr.length-1;//定义一个指针,此时指向的是一个空位
改为

非常感谢,这是我的疏忽了

作者: pray    时间: 2014-4-26 03:43
让人阅毕击掌三叹的好帖




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