zoukankan      html  css  js  c++  java
  • C语言的指针数组与指针数组

    一、指针数组与指针数组

      1,指针数组

      顾名思义,即一个元素全部是指针的数组,其形式与普通数组相似,形式如 *a[N]。

    在理解指针数组的使用方式前,我先来说下我个人对数组的理解。

      比如一维整形数组(形如int a[3]),其实是一个具有3个整形元素的变量;二维整形数组(形如int a[4][3]),可将其视为有a[4]和int[3]两部分构成,将a[4]视为一个一维数组,其中包含a[0]、a[1]、a[2]、a[3],每个元素都是int[3]类型,比如a[0]包含a[0][0],a[0][1],a[0][2]三个元素;三维数组以此类推...

      指针数组的元素既然是指针,那么就可以将它的每一个元素指向相同类型的其他元素(比如指向数组)。

      下面举个例子说明指针数组的使用方法  

    #include<stdio.h>
    #include<stdlib.h>
    
    #define M 4
    #define N 3
    
    void main()
    {
        int *a[M],b[M][N];       //分别定义指针数组与二维数组
        int i,j;               
    
        for(i=0;i<M;i++)        //为数组赋值
        {
            for(j=0;j<N;j++)
            {
                b[i][j] = i+j;
            }
        }
    
        for(i=0;i<M;i++)        //为指针数组赋值,将其元素指向二维数组的第一维的元素
        {
            a[i]=b[i];
        }
    
        for(i=0;i<M;i++)        //打印出数组
        {
            for(j=0;j<N;j++)
            {
                printf("%4d",a[i][j]);  //a[i][j]可以写成*(a[i]+j)等其他合理的形式
            }
            printf("
    ");
        }
    
    
        getchar();
    }

      2,数组指针

      数组指针是一个指向数组的指针,形式为  (*a)[N],既可以指向一维数组,也可以指向二维数组。当执行a+1操作时,它会跨过N个单位长度。

    下面举例子说明

    #include<stdio.h>
    #include<stdlib.h>
    #define M 4
    #define N 3
    
    
    void main()
    {
        int (*a)[N],b[M][N];
        int i,j;
    
        for(i=0;i<M;i++)
        {
            for(j=0;j<N;j++)
            {
                b[i][j]=i+j;
            }
        }
        
    
        printf("利用b[i][j]方式打印数组
    ");
        for(i=0;i<M;i++)
        {
            for(j=0;j<N;j++)
            {
                printf("%4d",b[i][j]);
            }
            printf("
    ");
        }
    
        a=&b[0];//或者a=b,但前者可能更为准确
    
        printf("利用a[i][j]方式打印数组
    ");
        for(i=0;i<M;i++)
        {
            for(j=0;j<N;j++)
            {
                printf("%4d",a[i][j]);
            }
            printf("
    ");
        }
    
        getchar();
    }

    转自:http://www.cnblogs.com/cxz66/p/6682464.html

  • 相关阅读:
    LeetCode(287)Find the Duplicate Number
    LeetCode(290) Word Pattern
    LeetCode(205)Isomorphic Strings
    LeetCode(201) Bitwise AND of Numbers Range
    LeetCode(200) Number of Islands
    LeetCode(220) Contains Duplicate III
    LeetCode(219) Contains Duplicate II
    命令行执行Qt程序
    LeetCode(228) Summary Ranges
    redis 的安装和使用记录
  • 原文地址:https://www.cnblogs.com/luckytimor/p/6893901.html
Copyright © 2011-2022 走看看