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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© fangbuqianxing 中级黑马   /  2016-3-29 16:52  /  1042 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 fangbuqianxing 于 2016-3-30 00:05 编辑

强调二维数组的数组名是二级指针
分析a与a+i与*(a+i)与*(*(a+i)+j)之间的关系

# include<stdio.h>
int main()
{
        int a[3][4]={1,2,3,4,5,6,7,8,9,10,11,12};
        printf("a          =%p\n",a);
        printf("*a         =%p\n",*a);//证明数组名a是一个二级指针
        printf("a[0]       =%p\n",a[0]);
        printf("*a[0]      =%d\n",*a[0]);
        printf("&a[0]      =%p\n",&a[0]);
        printf("&a[0][0]   =%p\n",&a[0][0]);
        printf("**a        =%d\n",**a);
        printf("a+1        =%p\n",a+1);
        printf("*(a+1)     =%p\n",*(a+1));
        printf("*(a+1)+1   =%p\n",*(a+1)+1);
        printf("*(*(a+1)+1)=%d\n",*(*(a+1)+1));
        printf("**(a+1)    =%d\n",**(a+1));
        for(int i=0;i<3;i++)
        {
                for(int j=0;j<4;j++)
                {
                        //printf("%d\t",a[j]);
                        printf("%d\t",*(*(a+i)+j));  //*(*(a+i)+j)=a[j]
                }
                printf("\n");
        }
        return 0;
}
/*
a          =0018FF18
*a         =0018FF18
a[0]       =0018FF18
*a[0]      =1
&a[0]      =0018FF18
&a[0][0]   =0018FF18
**a        =1
a+1        =0018FF28
*(a+1)     =0018FF28
*(a+1)+1   =0018FF2C
*(*(a+1)+1)=6
**(a+1)    =5
1       2       3       4
5       6       7       8
9       10      11      12
Press any key to continue
*/

3 个回复

倒序浏览
加油。。。。。。。。。。。。。。。。。。。
回复 使用道具 举报
你不头晕吗?
回复 使用道具 举报
加油!!!!
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马