zoukankan      html  css  js  c++  java
  • 指针数组和数组指针的详细解答

    /**首先弄明白什么是指针数组,什么又是数组指针。
        指针数组:
            类型名  *数组名[数组长度]
            如:  int *p[8];
        因为优先级的关系,p先与[]结合,说明p是一个数组,然后再与*结合数组p
        的元素是指向整型数据的指针。相当于定义了8个整型指针变量。在此,p就是
        数组元素为指针的数组,本质为数组。
    
        数组指针:
            类型名 (*指针名)[数组长度]
            如:int (*p)[8];
        p先与*号结合,形成一个指针,该指针指向的是有8个整型元素的数组,
        p即为指向数组首元素地址的指针,其本质为指针。
    
    **/
    
    #include <stdio.h>
    #include <stdlib.h>
    
    int main()
    {
        int arr[4][4];
        int i,j,k=0;
        for(i=0;i<4;i++){
            for(j=0;j<4;j++){
                arr[i][j]=k;
                k++;
            }
        }
        int *p1[4];
        int (*p2)[4];
    
        for(k=0;k<4;k++){
            p1[k]=arr[k];
        }
    
        printf("
    使用指针数组的方式访问二维数组arr
    ");
    
        for(i=0;i<4;i++){
            for(j=0;j<4;j++){
                printf("arr[%d][%d]=%d	",i,j,*(p1[i]+j));
                ///p1[i]+[j]即第i行第j列的元素地址
            }
        }
        printf("
    -----------------------------------
    ");
        p2=arr;
        printf("
    使用数组指针的方式访问二维数组arr
    ");
    
        for(i=0;i<4;i++){
            for(j=0;j<4;j++){
                printf("arr[%d][%d]=%d	",i,j,*(*(p2+i)+j));
            }
        }
    
    
        return 0;
    }
    

    运行结果:

  • 相关阅读:
    Gym
    博客搬家
    UVA
    UVA
    UVA
    UVA
    UVA
    UVA1589——xiangqi
    SDUSToj第十一次作业源代码格式问题
    【成长之路】【python】python基础3
  • 原文地址:https://www.cnblogs.com/webmen/p/5739518.html
Copyright © 2011-2022 走看看