首页 > 其他分享 >二维数组

二维数组

时间:2022-10-25 17:57:16浏览次数:49  
标签:arr int 二维 ++ 地址 数组

二位数组的创建和初始化,二维数组的使用,二维数组在内存中的存储

int arr[3][4];  //表示3行4列,每个元素都是整形

#include <stdio.h>
int main() {
    //int arr[3][4];//3行4列的整形
    //初始化 - 创建的同时给赋值
    int arr1[3][4] = { 1,2,3,4,5,6,7,8,9,10,11,12 }; //完全初始化
    int arr2[3][4] = { 1,2,3,4,5,6,7,8 }; //不完全初始化
    int arr3[][4] = { {1,2},{3,4},{5,6} }; //可以省略行,但不能省略列
    return 0;
}

二维数组的使用

    // 如何打印出二维数组的值
    int arr1[3][4] = { 1,2,3,4,5,6,7,8,9,10,11,12 }; //完全初始化
    for (int i = 0; i < 3; i++) {
        for (int j = 0; j < 4; j++)
        {
            printf("%d ", arr1[i][j]);
        }
        printf("\n");
    }
    /*结果:
                1 2 3 4 
                5 6 7 8 
                9 10 11 12*/

二维数组在内存中的存储

二维数组在内存中也是连续存放的,每个数组地址相差为数组类型的地址大小

用途:

    // 如何打出二维数组在内存中的地址
    int arr1[3][4] = { 1,2,3,4,5,6,7,8,9,10,11,12 }; //完全初始化
    for (int i = 0; i < 3; i++) {
        for (int j = 0; j < 4; j++)
        {
            printf("arr[%d][%d]%p\n ",i,j, arr1[i][j]);
        }
        printf("\n");
    }
    /*结果:

arr[0][0]00000033AA4FF8C8
arr[0][1]00000033AA4FF8CC
arr[0][2]00000033AA4FF8D0
arr[0][3]00000033AA4FF8D4


arr[1][0]00000033AA4FF8D8
arr[1][1]00000033AA4FF8DC
arr[1][2]00000033AA4FF8E0
arr[1][3]00000033AA4FF8E4


arr[2][0]00000033AA4FF8E8
arr[2][1]00000033AA4FF8EC
arr[2][2]00000033AA4FF8F0
arr[2][3]00000033AA4FF8F4

*/

使用指针和数组结合

知识点:

对数组来说,*p是地址并且带值,p是下标,默认等于0,一维数组名就是第一个元素的地址,

对二维数组来说,得加取地址符&,因为地址是连续的,要了解清除数组的布局情况

//使用指针来计算出每个数组的值
    int arr2[2][3] = { 1,2,3,4 };
    int* p = &arr2[0][0];  //p是第零个地址,一维数组不需要加地址符,二维数组加
    for (int i = 0; i < 6; i++)
    {
        printf("%d ", *p);
        p++; //表示地址向前加一
    }/*结果:1 2 3 4 0 0
        */

如果把二维数组来当成一维数组,例如:arr[3][4]就变成了3个一维数组-->arr[0]、arr[1]、arr[2]

标签:arr,int,二维,++,地址,数组
From: https://www.cnblogs.com/kingxyg/p/16825706.html

相关文章

  • JS数组针对某键的值进行升序和降序
    dictArraySort(dictArray,sortKey,sortType="ascending",isTime=false){if(!isTime){if(sortType=='ascending'){dictArray......
  • 215. 数组中的第K个最大元素
    215.数组中的第K个最大元素优先队列的思路是很朴素的。由于找第K大元素,其实就是整个数组排序以后后半部分最小的那个元素。因此,我们可以维护一个有K个元素的最小堆:......
  • mybatis typehandler适配postgresql中的point数组数据类型
    mybatistypehandler适配postgresql中的point数组数据类型importlombok.extern.slf4j.Slf4j;importorg.apache.ibatis.type.BaseTypeHandler;importorg.apache.ibat......
  • Java数组
    Java数组什么是数组数组是相同类型数据的有序集合。数组声明创建//声明dataType[]arrayName;//首选方法dataTpearrayName[];//创建使用new操作符创建数组dataTy......
  • 编写Golang程序以查找数组中每个元素的出现次数
    http://www.nhooo.com/note/qa5b2a.html解决这个问题的方法  步骤1: 定义一个接受数组的方法。步骤2: 定义一个映射,其中key将是数组的元素,起始值为0。步......
  • PostgreSQL 数组类型使用详解
    PostgreSQL数组类型使用详解PostgreSQL数组类型使用详解可能大家对PostgreSQL这个关系型数据库不太熟悉,因为大部分人最熟悉的,公司用的最多的是MySQL我们先对Postgr......
  • shell脚本之数组
    一、数组的概念数组中可以存放多个值。BashShell只支持一维数组(不支持多维数组)。与大部分编程语言类似,数组元素的下标由0开始。Shell数组用括号来表示,元素用"空格......
  • 实验3 数组、指针与现代C++标准库
    实验任务5:info.hpp文件源码 1#pragmaonce2#include<string>3#include<iostream>4#include<iomanip>5usingnamespacestd;6classinfo{7pub......
  • 原生数组转包装类(基本类型数组、包装类数组、集合之间的相互转换(以及遍历方法))
    importjava.util.*;importjava.util.stream.Collectors;importstaticjava.util.Arrays.*;publicclassZhuanHuan{publicstaticvoidmain(String[]args){......
  • Java数组定义和内存原理
    数组定义和访问容器概念容器:是将多个数据存储到一起,每个数据称为该容器的元素。数组概念数组概念:数组就是存储数据长度固定的容器,保证多个数据的数据类型要一致。数组......