这是过去两小时对我ug笑的。 我试图把两行换成两个层面。 这不是一个问题,但我希望以能够点人的交换功能来做到这一点。 这里我迄今为止所做的事情:
#include <stdio.h>
#include <stdlib.h>
void swapRows(int **a, char **b)
{
int *temp = *a;
*a = *b; // WARNING #1
*b = temp; // WARNING #1
}
void print(int a[][2],int rows,int cols)
{
int i,j;
for (i=0; i<rows; i++)
{
for (j=0; j<rows; j++)
{
printf("%d ",a[i][j]);
}
printf("
");
}
}
int main(void)
{
int matrix[2][2] = {{1,2},{3,4}};
print(matrix,2,2);
swapRows(&matrix[0],&matrix[1]); //WARNING #2
print(matrix,2,2);
return EXIT_SUCCESS;
}
因此,我的问题是:
(1) 互换功能只在每一阵列中的第一个要素之间互换,这是有意义的。 我怎么去掉其他内容? 我是否赞成整整整段?
2) 声明其印刷时,只有一版<代码>a []2。 在我尝试撰写<代码>int **arr之前,我有分部分表决的过错。 为什么如此? 此外,我为什么必须具体说明阵列争论中的col号? 我有这方面的浏览和col,为什么编辑者迫使我这样做?
3)finally, using this version of print()
I get a warning from the compiler passing argument 2 of ‘swapRows’ from incompatible pointer type
(warning #2 in the code) and I get another warning (#1) : assignment from incompatible pointer type
in swapRows()
. Why is that?
Thanks in advance!