关于二维数组的作为参数的3种传递方式,为什么C++语言下的问题
首先 显示C语言编程下的方式程序代码:
#include <stdio.h> main() { int a[3][4] = { 1,2,3,4, 5,6,7,8, 9,1,0,6 }; display(a, 3, 4); show(a, 3, 4); print(a, 3, 4); } display(int *q, int row, int col) { int i,j; for (i=0;i<row;i++) { for (j=0;j<col; j++) { printf("%d ",*(q + i*col +j)); } printf("\n"); } printf("\n"); } show(int (*q)[4], int row, int col) { int i,j; int *p; for (i=0;i<row;i++) { p = q + i; for (j=0;j<col;j++) { printf("%d ", *(p + j)); } printf("\n"); } printf("\n"); } print(int q[][4], int row, int col) { int i,j; for (i=0;i<row;i++) { for(j=0;j<col;j++) { printf("%d ", q[i][j]); } printf("\n"); } printf("\n"); }
我再使用了c++语言 来写
程序代码:
#include<iostream> using namespace std; voiddisplay(int *q, int row, int col) { int i,j; for (i=0;i<row;i++) { for (j=0;j<col; j++) { cout<<*(q + i*col +j); } } }; void show(int (*q)[4], int row, int col) { int i,j; int *p; for (i=0;i<row;i++) { p = q + i; for (j=0;j<col;j++) { cout<< *(p + j); } } }; void print(int q[][4], int row, int col) { int i,j; for (i=0;i<row;i++) { for(j=0;j<col;j++) { cout<<q[i][j]; } } }; int main() { int a[3][4] = { 1,2,3,4, 5,6,7,8, 9,1,0,6 }; display(a, 3, 4); show(a, 3, 4); print(a, 3, 4); }
结果很多在关于数组首地址处 有问题! 我自己学C++ 还没学到数组处,这里是建议我使用vector来完成二维数组的功能吗