C 为什么我的代码没有打印排序的数组?

C 为什么我的代码没有打印排序的数组?,c,arrays,function,pointers,multidimensional-array,C,Arrays,Function,Pointers,Multidimensional Array,为什么代码没有打印任何东西?这段代码要做的是以这种方式对2d数组进行排序: 2d数组表示一个{x,y},然后代码需要对其进行排序,包含x=0的行需要排在第二位。 这里的交换函数是在两行之间交换。现在,当我尝试打印排序后的数组时,输出中没有任何内容 #include <stdio.h> void swap(int p1[], int p2[]); int arrange(int p[][2], int n); void swap(int p1[], int p2[]){ for

为什么代码没有打印任何东西?这段代码要做的是以这种方式对2d数组进行排序: 2d数组表示一个{x,y},然后代码需要对其进行排序,包含x<0的行需要排在第一位,包含x>=0的行需要排在第二位。 这里的交换函数是在两行之间交换。现在,当我尝试打印排序后的数组时,输出中没有任何内容

#include <stdio.h>
void swap(int p1[], int p2[]);
int arrange(int p[][2], int n);


void swap(int p1[], int p2[]){
  for(int i=0; i<2; i++){
    int temp=p1[i];
    p1[i]=p2[i];
    p2[i]=temp;
  }
}

int arrange(int p[][2], int n){
  int idx=0;
  for(int i=0; i<n; i++){
    if(p[i][0] >= 0 && (i+1)<n)
        if(p[i+1][0] <0) {
            swap(&p[i][0],&p[i+1][0]);
            idx++;
        }
    else if(p[i][0]<0)
        idx++;
  }
return 1;
}

int main()
{
  int a[4][2]={{1,2},{6,7},{-10,5},{0,1}};
  arrange(a[4][2], 4);
  for(int i=0; i<4; i++){
        printf("{%d, %d}, ", a[i][0], a[i][1] );
  }

}
#包括
无效掉期(整数p1[],整数p2[]);
int排列(int p[][2],int n);
无效掉期(整数p1[],整数p2[]{
对于(int i=0;i
为什么代码没有打印任何东西

因为它不会编译,因为编译器应该给出错误和警告

要修复错误,请更改以下内容:

arrange(a[4][2], 4);
为此:

arrange(a, 4);

附件:

下面是传递给它的带有
Wall
标志的GCC给我的警告:

prog.cc: In function 'int arrange(int (*)[2], int)':
prog.cc:17:7: warning: suggest explicit braces to avoid ambiguous 'else' [-Wdangling-else]
17 |     if(p[i][0] >= 0 && (i+1)<n)
   |
prog.cc:int-arrange(int(*)[2],int]函数中:
prog.cc:17:7:警告:建议使用显式大括号以避免歧义的“else”[-Wdangling else]
17 |如果(p[i][0]>=0&&(i+1)=0&(i+1)
为什么代码没有打印任何东西

因为它不会编译,因为编译器应该给出错误和警告

要修复错误,请更改以下内容:

arrange(a[4][2], 4);
为此:

arrange(a, 4);

附件:

下面是传递给它的带有
Wall
标志的GCC给我的警告:

prog.cc: In function 'int arrange(int (*)[2], int)':
prog.cc:17:7: warning: suggest explicit braces to avoid ambiguous 'else' [-Wdangling-else]
17 |     if(p[i][0] >= 0 && (i+1)<n)
   |
prog.cc:int-arrange(int(*)[2],int]函数中:
prog.cc:17:7:警告:建议使用显式大括号以避免歧义的“else”[-Wdangling else]

17 |如果(p[i][0]>=0&&&(i+1)=0&&(i+1)
arrange(a[4][2],4);
应该
arrange(a,4);
是,严肃对待编译器的警告。
arrange(a[4][2],4)
应该
arrange(a,4);
是,严肃对待编译器的警告。