double a=4;
double *x=&a;
double **y=&x;
cout <<x<<endl<<(y+1)<<endl<<(y+1)[0]<<endl<<y[1];
Run Code Online (Sandbox Code Playgroud)
如果我运行上面的C++代码,输出将是:
0x28fef0
0x28fef0
0
0
我知道x的值是变量a的地址,y的值是变量x的地址.但是怎么来x = y + 1?y + 1,(y + 1)[0]和y [1]是什么意思?谢谢你的帮助!
在数值计算中,我们经常处理矩阵和张量,但是当我们用C/C++编写代码时,为什么我们总是使用一维数组来表示矩阵和张量?为什么我们不能使用多维数组呢?显然,多维数组更方便,就像在Matlab中一样.多维数组是否会花费太多内存?谢谢你的任何解释.
PS:我正在读一本数值计算代码.三指数张量T(i,j,k)总是由一维阵列T [1]表示,其中l = i + jI + kIJ(IJK分别是指数ijk的维度).我想知道我是否可以在三维数组T [i] [j] [k]中写出张量?