黑马程序员技术交流社区

标题: 用数组名访问二维数组 注意事项 [打印本页]

作者: Mal    时间: 2015-7-27 21:52
标题: 用数组名访问二维数组 注意事项
int a[3][4]={
    {1,3,5,7},
    {9,11,13,15},
    {17,19,21,23}
};

a代表第0行首地址
a+1代表第1行首地址
a+2代表第2行首地址
a+i代表行号为i的行首地址(按行变化)

a[0]代表a[0][0]的地址
a[0]+1代表a[0][1]的地址
a[0]+2代表a[0][2]的地址
a[0]+3代表a[0][3]的地址

int a[3][4] = {{1,2,3,4}, {5,6,7,8}, {9,10,11,12}};
访问 第一行的第一个元素地址表示:
a + 1 =  &a[1]  =  a[1]  =  &a[1][0]  =  *(a + 1)

获取第一行的第一个元素值的方式:
*a[1] =  a[1][0] = **(a + 1)

for (int i = 0,i<3,i++){
   
    for (int j = 0,j<4,i++){
        
        printf("%d",*(a[i]+j)); // a[i]第i行的地址  指向第i行第一个元素的地址
                                //  a[i]+j   指向第i行第j个元素的地址
                                //  *a([i]+j) 取出指向第i行第j个元素的地址对应的内容
        
        // *(pa[i]+j) = *(*(pa+i)+j)
        
    }
}






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