|  | 
 
| 
x
马上注册,结交更多好友,享用更多功能^_^您需要 登录 才可以下载或查看,没有账号?立即注册  复制代码void fun_1(){
    int a[5] = {1,2,3,4,5};
    int *temp = a;
    for(int i = 0; i< 5; i++){
        printf("%d ",*temp++);
    }
    printf("\n");
    //运行结果:1 2 3 4 5
//疑问一:为何该种方式可以取出数组中的内容,下面fun_2中利用数组指针反而取不出来?
}
void fun_2(){
    int a[5] = {1,2,3,4,5};
    int (*p)[5] = a;//
    printf("addr of a:%p\n",p);//0060Fe4a
    for(int i = 0; i < 5;i++){
        printf("%d  ",*p++);
    }
    printf("\n");
    //运行结果:6356660  6356680 6356700 6356720 6356740
//疑问二:上述方法为何没有真确取出数组中的内容
    for(int i = 0; i< 5; i++){
        printf("%d  ",*(*p++));
        //数组指针是二级指针? *p 获取数组元素的地址,*(*p)获取该地址中的元素内容
    }
    printf("\n");
    //运行结果:-2  1966436733  0  0  6356956
    for(int i = 0; i<5;i++){
        printf("%d  ",*(*(p + i) ));
    }
    printf("\n");
    //运行结果: 6356964  2009549335  4199040
    int (*p1)[5] = &a;
    for(int i = 0 ; i<5;i++){
        printf("%d ", *p1++);
    }
    printf("\n");
    //运行结果:1,2,3,4,5
    for(int i = 0; i<5;i++){
        printf("%d ",*(*p1 + i ));
    }
    printf("\n");
    //运行结果:-1 6356820 1966458992 1682321915 -2
    // 小甲鱼老师这样运行是对的,为何我这里运行不出来:运行环境为windows下的codeBlock
}
 
 
 | 
 |