今天在做练习的时候发现的问题。
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++指针访问二维数组