今天在做练习的时候发现的问题。

c++内的二维数组在解析的时候将其看做为数组元素为 一维数组的一维数组。

也即是类似于numpy里的结构   [ [],[],[] ]

而不是一般书上示意图画的.  

[],

[],

[]

结构。

 

所以用指针访问元素的时候,当访问下一行应该是 递增一个单个数组长度的值。代码28行

 

 1 #include "stdio.h"
 2 #include "stdlib.h"
 3 int main()
 4 {
 5     int N, Number[10];
 6 
 7     scanf("%d", &N);
 8     for (int i=0;i<N;i++){
 9         scanf("%d", &Number[i]);
10     }
11 
12     int Matrix[N][N];
13     for (int i=0;i<N;i++){
14         for(int j=0; j<N;j++){
15             Matrix[i][j] = Number[i]*10+Number[j];
16 
17         }
18     }
19 
20     int Sum = 0;
21 
22     int* y= (int*) Matrix;
23     for (int i=0;i<N;i++){
24         for(int j=0; j<N;j++){
25             if(i!=j)
26                 Sum += y[j];
27             }
      // ++y 错误
28 y = y+N;  // 递增一个数组的长度 29 } 30 printf("%d\n", Sum); 31 32 return 0; 33 }

 

 

(3条消息) C++中指针访问二维数组_Dear_Jia的博客-CSDN博客_c++指针访问二维数组