zoukankan      html  css  js  c++  java
  • 多维数组与指针

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

    例:定义: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));
    }
  • 相关阅读:
    关于“云计算”
    实现工作流至少需要几张表?
    BPI (业务流程改进)项目的管理沙龙笔记
    对“设计”工作在流程中的重新定位
    面向。。。驱动
    定个小目标
    Redis源码分析Sentinel(1)Sentinel服务器
    Redis源码分析Sentinel(3)主观下线与客观下线
    Redis源码分析Sentinel(2)实例处理的Monitor half
    Redis源码分析Sentinel(4)实例处理的Acting half
  • 原文地址:https://www.cnblogs.com/lvfengkun/p/10357034.html
Copyright © 2011-2022 走看看