关于二维数组的作为参数的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来完成二维数组的功能吗







