求大神讲解一下指针指向二维数组时该怎么用?

问题描述

求大神讲解一下指针指向二维数组时该怎么用?

指针指向一维数组时只用*(p+n)即可,但是二维数组时候改怎么用呢?

解决方案

个人认为其实二维数组还是一维数组,没有什么区别,例如int a[3][4],就相当于int a[12]。要想访问a[2][3],就用*(a+(4*2+3)*(sizeof(int))),应该是这样,不过我一般用a[4*2+3] 来访问对应的元素
本人也是菜鸟,如果有错还请大神们指正~

解决方案二:

由于指针与数组之间可以若转化,所以在一定程度上可以理解为数组就是指针,指针就是数组,如此理解,数组对应指针,二级指针对应二维数组,
现在解答楼主问题,
访问数组中的某个元素:
cout << p[i][j] << endl; // 此处i和j是下标,需要声明,楼主注意
cout << a[i][j] << endl;
以上两种写法运行结果一致

解决方案三:

二维数组例子:
http://blog.csdn.net/qq_27183003/article/details/49699463
数组和指针
http://blog.csdn.net/qq_27183003/article/details/49638895

解决方案四:

http://www.cnblogs.com/carekee/articles/1948326.html

时间: 2024-08-03 22:22:27

求大神讲解一下指针指向二维数组时该怎么用?的相关文章

autohotkey-请教各位大神,AutoHotkey如何实现二维数组?

问题描述 请教各位大神,AutoHotkey如何实现二维数组? 各位大神好,看了AutoHotkey的API文档,发现里面只有一维数组Array和映射Object 现在想实现一个原来在C语言里面的程序,定义一个二维数组 比如: int arr[10][10] = {}; for(inti = 0 ; i < 10 ; i++) { for(int j = 0 ; j < 10 ; j++) { arr[i][j] = i*j -100; } } 上面只是举一个简单的例子,实际需求比这个复杂,因

关于指向二维数组的指针编译出错

问题描述 关于指向二维数组的指针编译出错 #include int m; int n; int a[10][10]; void InputArray(int *p, int m, int n); int main(void) { int *(ptr)[10]; ptr=a; printf("Input m,n: "); scanf("%d,%d",&m,&n); InputArray(*ptr,m,n); } void InputArray(int

C语言 指针与二维数组详解_C 语言

二维数组在概念上是二维的,有行和列,但在内存中所有的数组元素都是连续排列的,它们之间没有"缝隙".以下面的二维数组 a 为例: int a[3][4] = { {0, 1, 2, 3}, {4, 5, 6, 7}, {8, 9, 10, 11} }; 从概念上理解,a 的分布像一个矩阵: 0   1   2   3 4   5   6   7 8   9  10  11 但在内存中,a 的分布是一维线性的,整个数组占用一块连续的内存: C语言中的二维数组是按行排列的,也就是先存放 a[

关于java继承问题,求大神讲解

问题描述 关于java继承问题,求大神讲解 父类引用子类对象,父类变量可以使用子类的普通函数吗?为什么?? 解决方案 不能,因为对父类类型来说它只能访问自己有的方法,而子类类型却可以除了自己定义的方法,还有继承自父类的方法.这跟自然界的继承一样,子类有自己的特性,也有继承来的特性.而父类却只有自己的特性,不会有子类的特征. 解决方案二: 不可以的,子类继承父类后只能使用父类权限为public的方法或成员变量.父类不能调用子类的成员变量和方法.当子类继承父类后, 便继承了父类的某些特性,但父类却无

源代码-Swift语法错误的问题求大神讲解

问题描述 Swift语法错误的问题求大神讲解 import Foundation let useInput = "To write the code for class , you must provide three chunks or sentions of code" var OutputCount = 0 for chares in useInput { switch chares { case "a","e","i"

java-求解这段代码是什么意思,表示看不懂,求大神讲解,不知道其中是怎么实现增删改查的

问题描述 求解这段代码是什么意思,表示看不懂,求大神讲解,不知道其中是怎么实现增删改查的 class Clerk { private String id; private String name; private String duty; private double salary; public Clerk(String id, String name) { this.id = id; this.name = name; } public void addClerk() { // TODO A

maven-Maven工程 工程名上有错误 但是打开以后都没错误 这是为什么啊 求大神讲解

问题描述 Maven工程 工程名上有错误 但是打开以后都没错误 这是为什么啊 求大神讲解 Maven工程 工程名上有错误 但是打开以后都没错误 这是为什么啊 求大神讲解 解决方案 JDK或web 设置不一致 看看这里http://www.thinksaas.cn/group/topic/335949/ 解决方案二: 很有可能是class path 配置的问题.举个例子,比如工程class path中添加了a.jar,但实际上项目里的代码并没有真正使用到a.jar,此时a.jar因为某种原因被物理

导入一个myeclipse项目本来正确的代码出错,求大神讲解

问题描述 导入一个myeclipse项目本来正确的代码出错,求大神讲解 做一个项目我myeclipse的配置jdk1.7的 ,不是一个人做,在导入项目后报出的错误很难理解,一个 ); 号错误,一直不知道怎么回事. 如图:为了与项目配置一致,我特意将jdk换成1.6的并且重新配置了环境变量,但是代码莫名其妙的报错,而且还不是全报错,是有的java类报错,有的配置文件报错. 解决方案 如果jar包确定导入的话,src里面错,有可能是由于编码问题,你看System语句有咩有乱码的,webroot里js

vc-c语言的疑惑,求大神讲解

问题描述 c语言的疑惑,求大神讲解 在vc环境下conio.h不是没有这些函数gotoxy(),clrscr()那么它在vc环境下到底有什么用 解决方案 这些函数是TurboC特有的,VC没有,VC使用gdi去作图. 解决方案二: 头文件中有其它一些定义,不过这都是一些控制台相关的,用的应该很少. 解决方案三: VC有自己的图形库,你要强行用别的话,弄起来比较麻烦 解决方案四: 要做图形界面,可以用VC的MFC来做啊 解决方案五: 屏蔽,试下,就可以知道结果了!~ 解决方案六: 那个清屏函数应该