C艺术篇 1-2 二维数组

接下来讨论二维数组。若有一个二维数组如下:

int x[3][2] ={10,20,30,40,50,60};

此数组共有六个元素(3行,2列),每一元素的地址为&x[0][0]、&x[0][1]、&x[1][0]、&x[1][1]、&x[2][0]、&x[2][1]。

从输出的结果得知x[0]等于&x[0][0],x[1]等于&x[1][0]。

由上面的例子 我们知道了一个二维数组x 当用一维数组表示的时候 ,x里面的数字表示的是行,列默认为0。

集合1-1里面说的数组名就是地址,所以可以表示 x等于&x[0][0],x+1等于&x[1][0]。

虽然x[0]和x皆表示&x[0][0],若两者加1,结果是否一样呢?

请看下面的例子

从输出的结果得知,虽然x与x[0]都是等于&x[0][0],但各加1个单位是不一样的,如x+1是等于&x[1][0],它是第二行第一个元素的地址

而x[0]+1等于&x[0][1],它是第一行第二列元素的地址。

结合刚刚那句话

得出结论:二维数组表示时: x可以表示为地址&x[0][0],x[0] == x[0][0],x[1] == x[1][0],因为当用一维数组表示二维数组时,只表示行,列默认为0。

                        当进行运算符运算时:x+1等于二维数组行+1,即&x[1][0]。x[0]+1等于二维数组列+1,即x[0][1]。

原文地址:https://www.cnblogs.com/Hh-blog/p/9979521.html

时间: 2024-10-15 13:29:34

C艺术篇 1-2 二维数组的相关文章

java杨辉三角和空心菱形(二维数组篇)

一.杨辉三角 1 import java.util.Scanner; //导入包 2 public class Test7 { 3 public static void main(String[]args){ 4 5 Scanner row=new Scanner(System.in); //调用扫描器 6 int n = row.nextInt(); //定义类型 7 int [][] a=new int[n][n]; //定义二位数组 8 int i,j; //声明整型 9 10 for(i

C语言数组篇(五)多级指针和二维数组指针的区别

多级指针 以二级指针为例 二级指针的由来是 指针数组 的指针形式. int *p[10] 读取的顺序是 p[10] --> 10个空间的数组 * p[10] --> 这10个空间的数组里面存放的数据都是 指针型的数据 int *p[10] --> 数组里面每个指针指向的空间存放的是int型的数据 int *p[10] --> int **p; p: 指针数组的数组名,也是数组的首地址. *p 数组里面存放的指针 **p 数组里面存放的指针 指向的空间 的内容 二维数组指针: 二维数

二级指针与二维数组

最近看<Linux C程序设计大全>这本书,虽然书中有一些错误,但整体来说,书写得还算可以. 当看到网络编程[第23.2.4小节 获得主机信息]时,遇到了一段代码,原文如下: “一台主机有许多和网络相关的信息,例如,主机名称.IP地址.主机提供的服务等.这些信息一般都保存在系统中的某个文件里(例如/etc/hosts等),用户程序可以通过系统提供的函数读取这些文件上的内容.Linux环境下使用gethostent函数读取和主机有关的信息,该函数的原型如下: 1 #include <net

【转载】二维数组的动态分配和参数传递

本篇随笔为转载,原贴地址:http://www.cnblogs.com/bigshow/archive/2009/01/03/1367661.html. 1. C语言动态分配二维数组 (1)已知第二维 Code-1 char (*a)[N];//指向数组的指针 a = (char (*)[N])malloc(sizeof(char *) * m); printf("%d\n", sizeof(a));//4,指针 printf("%d\n", sizeof(a[0]

【二维数组内存申请】

前要:内存申请与释放 头文件:#include <stdlib.h> 申请: malloc(配置内存空间) 相关函数 calloc,free,realloc,brk函数原型 void * malloc(size_t size);一般使用时会将void改为自定义型如: double **pd=NULL; pd =(double **)malloc( sizeof(double *)*n); for(int i=0;i<n;i++) pd[i]=(double *)malloc(n*size

求二维数组中最大子数组的和

一.题目: 返回一个二维整数数组中最大子数组的和. 要求: 输入一个二维整形数组,数组里有正数也有负数. 二维数组中连续的一个子矩阵组成一个子数组,每个子数组都有一个和. 求所有子数组的和的最大值.要求时间复杂度为O(n). 二:结对编程要求: 两人结对完成编程任务. 一人主要负责程序分析,代码编程. 一人负责代码复审和代码测试计划. 发表一篇博客文章讲述两人合作中的过程.体会以及如何解决冲突(附结对开发的工作照). 三:设计思路: 将二维数组的每行轮番逐次相加(包括单行)后看成一维数组,利用求

vector动态二维数组(容器的容器)占用内存分析

之前在这里写过一篇"C++中的动态二维数组".在C++中没有动态二维(多维)数组.但是根据原理我们可以自己创建. 在看过STL的vector源代码后"<STL源码剖析>---stl_vector.h阅读笔记"后,想到可以用容器的容器来做二维数组. 创建一个2x4的二维数组.想到的办法是:先创建一个容器的容器,外层大小的2(2行),然后里面容器小大为4(4列). int row=2,col=4; vector<vector<int> &g

图像转换为二维数组存入DSP6748

 本文为原创作品,转载请注明出处 欢迎关注我的博客:http://blog.csdn.net/hit2015spring和http://www.cnblogs.com/xujianqing/ 这篇博客主要是要讲怎么把一张图片存成一个二进制的文件,直接存到DSP中来做处理,而不用考虑DSP与图像采集模块,或者上位机之间的数据通信使得我们更加专注于算法的开发研究和处理功能的实现. 这是最近在做的一样工作,主要开发对雷达图像处理的目标检测算法.思路是先把现成的雷达图片转化为一个数组,然后以头文件的

C++二维数组动态申请内存

好久没用C++刷题了,今天早上刷了几条题,感觉很陌生了.怪我,大二下实在太颓废了,没啥作为. 今天更新个关于c++二维数组内存申请的问题,当初作为菜鸟初学指针的时候,还是在这方面有点搞不通的.今天用到了,顺便写下来,适当时候给C++初学者用用. -----------C++二维数组动态申请内存-------------- 如果对new和delete不是很了解的话可以到这里来看看,http://www.cnblogs.com/hazir/p/new_and_delete.html 首先,我们一般需