多维数组与指针(代码片段)

lvfengkun lvfengkun     2023-03-06     396

关键词:

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

例:定义: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));

 

c多级指针与多维数组(代码片段)

使用指针访问数组指针类型的加减运算可以使指针内保存的首地址移动。指针类型加n后。首地址向后移动n*步长字节。指针类型减n后。首地址向前移动n*步长字节。步长为指针所指向的类型所占空间大小。例如:int*p=(int*)100;p+1... 查看详情

c语言数组(多维数组本质|步长角度理解多维数组本质)(代码片段)

文章目录一、从步长角度理解多维数组本质二、代码示例一、从步长角度理解多维数组本质声明一个二维数组;//声明一个多维数组intarray[2][3];二级指针:array+i表示第i行的地址,整个第i行地址,array是二级指针;array+i的步长是一... 查看详情

c_cpp通过指针访问多维数组(代码片段)

查看详情

c语言二级指针作为输入(指针数组|复杂指针解读)(代码片段)

...数组|指针运算|数组访问方式|字符串|指针数组|数组指针|多维数组|多维指针|数组参数|函数指针|复杂指针解读)3.解读复杂的指针声明(难点重点|①找出中心标识符②先右后左看确定类型提取③继续分析左右看…)博客,阅读复杂指... 查看详情

c语言基础:c中数组详解(多维数组传递数组给函数从函数返回数组指向数组的指针)(代码片段)

...数组元素)02:C语言基础:C中数组详解(多维数组、传递数组给函数、从函数返回数组、指向数组的指针)1.C中数组详解在C中,数组是非常重要的,我们需要了解更多有关数组的细节。下面列出了C程... 查看详情

c语言数组与指针操作(数组符号[]与指针*符号的联系与区别|数组符号[]与指针*符号使用效果基本等价|数组首地址与指针本质区别)(代码片段)

...数组|指针运算|数组访问方式|字符串|指针数组|数组指针|多维数组|多维指针|数组参数|函数指针|复杂指针解读)博客,进行理解;一、数组符号[]与指针*符号使用效果基本等价在上一篇博客【C语言】字符串操作(使用数组下标操作字... 查看详情

c语言数组(多维数组本质|n维数组名称本质是n-1级数组指针)(代码片段)

文章目录总结一、多维数组本质二、完整代码示例总结n维数组名称本质是n-1级数组指针一、多维数组本质给定多维数组://声明一个多维数组intarray[2][3];打印二维数组,打印array和array+1的值,array是数组首元素地址;打印结果是array... 查看详情

指向多维数组 C++ 的指针

】指向多维数组C++的指针【英文标题】:PointertomultidimensionalarrayC++【发布时间】:2020-07-1413:46:28【问题描述】:我正在尝试了解如何将指针与多维数组一起使用(例如:2维、3维......)。我在网上看到了很多资源,但我似乎仍然... 查看详情

指针和多维数组(代码片段)

zippo[0][0]zippo[0][1]zippo[1][0]zippo[1][1]zippo[2][0]zippo[2][1]zippo[3][0]zippo[3][1]zippo[0]zippo[1]zippo[2]zippo[3]zippozippo+1zippo+2  zippo+3intzippo[4][2]=1,2,3,4,5,6,7,8;printf("zippo=%d,zippo+1=%d,*(zippo+1)=%d,*(zippo+1)+1=%d,*((zippo+1)+1)=%d,**(zippo+1)=%d,*(*(zippo+2)+1)=%d",zippo,... 查看详情

c_cppÇ与c++的动态多维数组的建立与释放(代码片段)

查看详情

cuda中使用多维数组(代码片段)

...发现有一个cudaMallocManaged函数,这个函数可以很好的组织多维数组的多重指针的形式,后来发现,这个问题之前在StackOverflow中就有很好的解决。先贴一下我自己的代码实现:1#include"cuda_runtim 查看详情

多维数组和多维指针

1.指针变量在内存中会占用一定的空间2.可以定义指针来保存指针变量的地址值3.指针在本质上也是变量,对于指针也同样存在传值调用与传址调用#include <stdio.h>#include <malloc.h>int reset(char**p, int size, ... 查看详情

c语言数组(多维数组做函数形参退化为指针过程|intarray[2][3]->intarray[][3]->int(*array)[3])(代码片段)

文章目录一、多维数组做函数形参退化为指针过程1、使用intarray[2][3]作函数参数2、使用intarray[][3]作函数参数3、使用int(*array)[3]作函数参数一、多维数组做函数形参退化为指针过程一维数组作为函数参数时,会退化为指针;解决方... 查看详情

数组与指针(代码片段)

数组与指针适用场合指针 -> 地址 -> 一对一数组 -> 地址集合 -> 一对多 inta=1; //字面变量 //大写表示数组小写表示指针 /****************************/ int*c; //一级指针 intC[1]; //一级数组 /****************************/ intCC[1][1]; //二... 查看详情

指针与数组(代码片段)

二级指针、指针数组、数组指针指针和数组的关系二级指针指针数组与数组指针指针数组的定义数组指针的定义举例指针和数组的关系通过上一篇文章指针的原理——地址、内存我们知道,数组名表示的其实是数组首元素的... 查看详情

c语言指针数据类型(指针步长|复杂指针阅读技巧)(代码片段)

...数组|指针运算|数组访问方式|字符串|指针数组|数组指针|多维数组|多维指针|数组参数|函数指针|复杂指针解读)3.解读复杂的指针声明(难点重点|①找出中心标识符②先右后左看确定类型提取③继续分析左右看…)博客章节进行分... 查看详情

多维数据结构与运算(代码片段)

数据科学技术与应用——第2章多维数据结构与运算2.1多维数据对象例题如下例题[2-1]创建两个一维数组风别保存学生姓名和考试科目,访问数组元素。学业水平考试涉及多门课程和多名学生,虽然课程名称、姓名的数据... 查看详情

c++指针与数组(代码片段)

C++指针与数组的关系。如何传递数组参数。如何返回数组参数。前言C,C++的指针和数组的联系非常紧密。数组的真正面目是什么?如何传递一个数组到函数中?为什么可以这么访问数组?函数如何返回多个返回值?这些问题老生... 查看详情