• 多维数组与指针


    用指针变量可以指向一维数组中的元素,也可以指向多维数组中的元素,但在概念和使用上,多维数组的指针比一维数组的指针要复杂一些。可以认为二维数组是数组的数组。

    例:定义:int a[3][4]={1,2,3,4,5,6,7,8,9,10,11,12};

    则二维数组a是由3个一维数组所组成的,设二维数组的首行首地址为2000,

    表示形式 含义 地址
    a 二维数组名,指向一维数组a0,即0行首地址 2000
    a[0],*[a+0],*a 0行0列元素地址 2000
    a[1]+2,*[a+1]+2,&a[1][2] 1行2列元素地址 2024
    *(a[1]+2),*(*(a+1)+2),a[1][2] 1行2列元素的值 元素值为13

    把二维数组分解为一维数组a[0],a[1],a[2]之后,设p为指向二维数组的指针变量。可定义为:int(*p)[4]。

    它表示p是一个指针变量,它指向包含四个元素的指针数组。

    p+i则指向一维数组a[i]。

    二维数组指针变量说明的一般形式为:类型说明符(*指针变量名)【长度】

    例:用指针变量输出二维数组元素的值。

    #include <stdafx.h>
    #include<stdio.h>
    
    void main()
    {
        int a[3][4]={0,1,2,3,4,5,6,7,8,9,10,11};
        int i,j;
        int (*p)[4];
        p=a;
        for(i=0;i<=2;i++)
        {
            for(j=0;j<=3;j++)
            {
                printf("%d
    ",*(*(a+i))+j);
            }
    
        }
            
    }

    例:通过输入指定行数和列数打印出二维数组对应的元素值。

    #include <stdafx.h>
    #include<stdio.h>
    
    void main()
    {
        int a[3][4]={0,1,2,3,4,5,6,7,8,9,10,11};
        int i,j;
        int (*p)[4];
        p=a;
        printf("i=");
        scanf("%d",&i);
        while(i>2||i<0)
        {
            printf("i=");
            scanf("%d",&i);
        }
        printf("j=");
        scanf("%d",&j);
        while(j>3||j<0)
        {
            printf("j=");
            scanf("%d",&j);
        }
        printf("%d",*(*(a+i)+j));
    }
  • 相关阅读:
    最能激怒程序猿的十句话()
    程序员是如何被外行给逼疯的?
    Linux 平台安装Oracle Database 12c
    替代恐慌你有吗?程序员会被深度学习技术淘汰吗?
    1006 换个格式输出整数 (15 分)C语言
    1021 个位数统计 (15 分)C语言
    1010 一元多项式求导 (25 分)C语言
    1009 说反话 (20 分)C语言
    1008 数组元素循环右移问题 (20 分)C语言
    1056 组合数的和 (15 分)C语言
  • 原文地址:https://www.cnblogs.com/lvfengkun/p/10357034.html
Copyright © 2020-2023  润新知