黑马程序员技术交流社区

标题: 听说这个迷宫代码还可以简化,大神们求帮助 [打印本页]

作者: 郭占岭    时间: 2015-9-5 23:07
标题: 听说这个迷宫代码还可以简化,大神们求帮助
#include <stdio.h>

/*   验证过程

arr[0][0]=0x7fff560d8be0  arr[0][1]=0x7fff560d8be4  arr[0][2]=0x7fff560d8be8
arr[1][0]=0x7fff560d8bec  arr[1][1]=0x7fff560d8bf0  arr[1][2]=0x7fff560d8bf4


arr = 0x7fff5ab9fbe0             -->   arr是数组名  代表  数组第一个元素的地址
arr+1 = 0x7fff5ab9fbec           -->   数组第一个元素(因为是一个二维数组,第一个元素的地址又是这个一维数组的)的地址   以第一个元素的长度+1

&arr[0][0] = 0x7fff5ab9fbe0      -->  第一个元素的地址
&arr[0][0]+1 = 0x7fff5ab9fbe4


arr[0] = 0x7fff5e393be0          -->  行地址   二维数组内第一个元素(这个元素是个一维数组)的地址   以第一行元素的长度+1
arr[1] = 0x7fff5e393bec          -->  第二行地址

&arr = 0x7fff560d8e0            -->  二维数组的地址
&arr+1 = 0x7fff560d8e0          -->  越界了的地址

*/

int main(){
   
    int arr[2][3] = {1,2,3,4,5,6};
   
    for (int i = 0; i < 2; i++) {
        
        for (int j = 0; j < 3; j++) {
            
            printf("&arr[%d][%d]=%p  ",i,j,&arr[i][j]);
            
        }
        
        printf("\n");
    }
   
    printf("\narr = %p\n",arr);      // &arr[0][0]=0x7fff560d8be0
   
    printf("\narr+1 = %p\n",arr+1);  // &arr[1][0]=0x7fff560d8bec
   
    printf("\narr[0] = %p\n",arr[0]);
   
    printf("\narr[1] = %p\n",arr[1]);
   
   
    return 0;
}
作者: 张健康ios0826    时间: 2015-9-5 23:31
有点高端,看不懂




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