A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 郭占岭 中级黑马   /  2015-9-5 23:05  /  736 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

#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;
}

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马