请问c++中指针与二维数组,下面图中程序里的 *(p+i*3+j) 是什么意思啊? 谢谢

如题所述

这个利用的是二维数组还是顺序存储的特点来直接计算a[i][j]的存储位置
*(p+i*3+j)就是a[i][j],因为p是指向首元素的元素指针,a每行有3个元素,这样a[i][j]按行优先存储时,和a[0][0]差了这么多个元素:i*3+j
a[0] 就是a[0][0]的地址
温馨提示:内容为网友见解,仅供参考
第1个回答  2016-12-24
*(p+i*3+j) 相当于 a[i][j]

C语言(*(*p+i))是什么意思
(1)如果定义int *p,p=a[0];则P是指向二维数组首个元素的指针变量。p=a[0]等价于p=&a[0][0],p+1等价于a[1]等价于&a[1][0](2)如果定义int (*p)[4] ,p=a;则P是指向二维数组第0行的指针变量。a等价于&a[0],*p等价于a[0];所以**p等价于a[0][0];(*(*p+i)+j)等价于:数组元素a[...

C++中用多维指针
二维数组可以理解为 一维数组的成员是一个数组。如count[6][4]表示 6个一维数组 。count=count+0 是一个指针,指向第一个数组,即*count就是第一个数组第一个元素的地址,**count=count[0][0]。count+i就指向第i个数组,*(count+i)就是第i个数组的首地址。自己慢慢体会,先把一维数组彻底弄...

c++ 用指针复制一个二维数组,输出时只能用指针表示元素,求大神...
cout<<*(*(p+i)+j)<<" "; } cout << endl; } return 0;}int main(){ double array[3][4] = {{1,2,3,4},{1,2,3,4},

c++中怎么通过指向二维数组的指针给二维数组赋值
二维数组本质上是以数组作为数组元素的数组,即“数组的数组”。二维数组的相当于由若干个一维数组组成的一级数组。int a[3][4];此时的a是一个二维数组,a[0]、a[1]、a[2]均表示一个一维数组,它们三个元素共同组成一个一维数组a(元素是一维数组)。也就是说二维数组a是由若干个一维数组元素...

C++函数调用二维数组
传递一个指向数组首地址的char * p指针,和 n对a[i][j]只能用*(p+i*n+j)操作 热心网友| 发布于2011-04-02 举报| 评论 0 0 用动态数组,new 一个http:\/\/baike.baidu.com\/view\/675652.htm lixdai | 发布于2011-04-02 举报| 评论 0 0 为您推荐: 二维数组作为函数参数 自调用函数二维数...

C++中p++的意思是什么?
p++ 就是把 p里面的内容+1个单位,因为 p存的是地址,所以是 地址+1,也就是下一个地址。而*p 是 取内容的意思,即 取当前存放内容对应(指向)的地址 里面的内容。p是指针,*(p+i)+j是指向二维数组第i行第j个元素的。变量q的值是变量b的地址。

c\/c++问题,ACCESS VIOLATION! 二维指针的问题~求高人大牛~
c = matrix_t(p1,2,2);问题出在这里 对于一个指向指针的指针p1,怎么知道它指向的是一个指针数组?第一句话,让p指向一个二维数组的第一个数据(0,0这个数据),然后把p的地址赋值给一个指向指针的指针,此时p1指向的是单一的指针p,而不是指针数组,然后在matrix_t函数里面对它进行p1[1][0...

...DLL中的接口参数有二维数组(如:foat**),在c#中如何将二维数组(sin...
这个问题 我可以非常明确地告诉你,C#无法直接调用这种参数的函数,C#中你描述的那种二维数组,本质上跟一维数组一致。倒是single[][]跟float**是类似的,但是也不能直接传递。然后具体说说 float* arr arr为指向float型的指针 single[] arr arr为single型数组的引用,当传递给API时,会自动传递...

c语言c++语言如何用二维数组做形参?
C\/C++中,二维数组的第一维的每一个元素都是一维数组。所以,用指向一维数组的指针或用第一维维数空缺的二维数组作为函数的形式参数都能达到目的。设处理数组为int型,举例代码如下:\/\/#include "stdafx.h"\/\/If the vc++6.0, with this line.#include "stdio.h"void myprint(int (*p)[5]){...

用C++编写一个程序,计算一个二维数组中所有元素的平均值(用指针...
{ cout << *( p + i ) << " "; \/\/输出二维数组的所有元素.ave = ave + *( p + i );} ave = ave \/ ( M * N );cout << "平均值 = " << ave << endl; \/\/输出结果; \/*方法2: 数组指针*\/ ave = 0; \/\/重新置0;float (*q)[N] = a;for(i = 0; i <...

相似回答