如何将2D数组中的行传递(提取)到1D数组。到目前为止,我只能将2D数组中的列传递给1D数组。
int funcA(int a[], int size)
{
//do something
return x;
}
int funcB(int a[MAX][MAX], int m, int n)
{
int x= funcA(a[0], m);
}
例如:
1 2 3 4
5 6 7 8
9 5 3 2
我想通过(1、2、3、4)或(9、5、3、2),而不是(1、5、9)
答案 0 :(得分:0)
使用[ROW][COL]
,显示一行很简单。只需要显示的行和列数即可。
专栏涉及更多。需要以行和列为单位的数组大小,并显示列。
array[row]
是指向每一行的便捷指针。
对于列,可以将数组强制转换为单个指针,并通过乘法和加法将每个索引获取到列。
可以创建另一个数组,并使用循环将列值复制到新数组中。
#include <stdio.h>
#include <stdlib.h>
#define ROW 4
#define COL 3
int showrow ( int *ptr, int col) {
for ( int i = 0; i < col; ++ i) {
printf ( "%3d", ptr[i]);
}
printf ( "\n");
return 0;
}
int showcol ( int *ptr, int row, int col, int show) {
for ( int i = 0; i < row; ++ i) {
printf ( "%*d\n",( show + 1) * 3, ptr[i * col + show]);
}
return 0;
}
int main ( void) {
int array[ROW][COL];
int value = 0;
for ( int row = 0; row < ROW; ++row) {
for ( int col = 0; col < COL; ++col) {
array[row][col] = value;
printf ( "%3d", array[row][col]);
++value;
}
printf ( "\n");
}
printf ( "\n");
showcol ( (int *)array, ROW, COL, 1);//show col 1
printf ( "\n");
showrow ( array[1], COL);//show row 1
return 0;
}