#include<stdio.h>
void print(int r, int c, int Ar[][c])
{
int i,j;
printf("n");
for(i=0;i<r;i++)
{
for(j=0;j<c;j++)
printf("%d ",Ar[i][j]);
printf("n");
}
}
int main()
{
int m,n,i,j;
int A[100][100];
printf("Enter number of rows and columns matrix: ");
scanf("%d%d", &m, &n);
printf("Enter elements of first matrix:n");
for (i=0;i<m;i++)
{
for (j=0;j<n;j++)
scanf("%d",&A[i][j]);
}
print(m,n,A);
return 0;
}
输出:输入行数和列数矩阵:2 3输入第一个矩阵的元素:2 1 35 4 6
2 1 30 0 0
为什么不打印第二行?
编辑:这个问题被标记为c++之前…
如果你想传递一个普通的旧c数组给一个函数,你有两种可能。
- 通过引用
- 通过指针传递
你所使用的,甚至不能编译。
在c++中数组必须有一个编译时已知的大小。
请见:
void function1(int(&m)[3][4]) // For passing array by reference
{}
void function2(int(*m)[3][4]) // For passing array by pointer
{}
int main()
{
int matrix[3][4]; // Define 2 dimensional array
function1(matrix); // Call by reference
function2(&matrix); // Call via pointer
return 0;
}
无论如何。使用像std::array
或std::vector
这样的现代c++容器几乎总是更好的解决方案。
下面的程序只在你的编译器是C99兼容的情况下才能工作
#include <stdio.h>
// n must be passed before the 2D array
void print(int m, int n, int arr[][n])
{
int i, j;
for (i = 0; i < m; i++)
for (j = 0; j < n; j++)
printf("%d ", arr[i][j]);
}
int main()
{
int arr[][3] = {{1, 2, 3}, {4, 5, 6}, {7, 8, 9}};
int m = 3, n = 3;
print(m, n, arr);
return 0;
}