C++中二维数组作为参数传递到一个函数
方法1、 第一维的长度可以不指定;但必须指定第二维的长度。
#include <stdio.h>
void print_a(int a[][5], int n, int m)
{
int i, j;
for(i = 0; i < n; i++)
{
for(j = 0; j < m; j++)
printf("%d ", a[i][j]);
printf("\n");
}
}
方法2、指向一个有5个元素一维数组的指针。
void print_b(int (*a)[5], int n, int m)
{
int i, j;
for(i = 0; i < n; i++)
{
for(j = 0; j < m; j++)
printf("%d ", a[i][j]);
printf("\n");
}
}
方法3、利用数组是顺序存储的特性。
void print_c(int *a, int n, int m)
{
int i, j;
for(i = 0; i < n; i++)
{
for(j = 0; j < m; j++)
printf("%d ", *(a + i*m + j));
printf("\n");
}
}
int main(void)
{
int a[5][5] = {{1, 2}, {3, 4, 5}, {6}, {7}, {0, 8}};
printf("\n方法1:\n");
print_a(a, 5, 5);
printf("\n方法2:\n");
print_b(a, 5, 5);
printf("\n方法3:\n");
print_c(&a[0][0], 5, 5);
getch();
return 0;
}
扩展资料:
printf函数使用注意事项
1、域宽
%d:按整型数据的实际长度输出。
如果想输出指定宽度可以指定域宽,%md-->m域宽,打印出来以后,在控制台上,显示m位;
如果要打印的数的位数如果超过我们设定m则原样输出;
如果要打印的数的位数如果小于设定的位数,则补空白,具体如下:
如果m为正数,则左对齐(左侧补空白);
如果m为负数,则右对齐(右侧补空白)。
2、转义字符
如果想输出字符"%",则应该在“格式控制”字符串中用连续两个%表示。
如:printf("%f%%",1.0/3);输出结果:0.333333%。
方法一change(int **a)直接传递一个指针进去
方法二change(int a[][10])数组的第二维维度一定要显式指定
a[ ][10]中的那个“10”是什么意思?能解释一下么?
那个10就是你的二维数组的第二维的长度啊,例如你定义int a[5][4],那么就应该是4
推荐于2017-09-01 · 知道合伙人教育行家
方法一change(int **a)直接传递一个指针进去
方法二change(int a[][10])数组的第二维维度一定要显式指定
假如主函数有一个二维数组int a[10][18];
写一个函数要传递二维数组,函数原型应该是这个样子
void f(int (*)a[18]);
或者 void f(int a[][18]) 必须确定第二维长度是多少