c语言如何将一个数组按照指针排序?

如题所述

方法有很多:

1、可以直接找到数组对应行的元素,进行交换数据,改变原数组内容。

2、可以定义指针数组指向每行的首地址,交换指针地址,按顺序打印每个指针为首的行数据,得到数据交换效果,原数组内容不变。

我这里用第2种方法给你写了一个,你参考吧。

#include <stdio.h>

int main ()
{
    int nArry[4][4]={{1,2,3,4},{2,3,4,5},{3,4,5,6},{4,5,6,7}};
    int *p[4],i,j,*psave,index[2];//p[]分别指向每行首地址
    printf("打印原数组:");
    i=16; p[0]=&nArry[0][0];
    while(i-->0)
    {
        if((i+1)%4==0)
            printf("\n");
        printf("%d ",*(p[0]));
        p[0]++;
    }

    while(1)
    {
        printf("\n\n输入2个你要交换的行号:");
        scanf("%d%d",&index[0],&index[1]);
        for(i=0;i<4;i++)
        {
            p[i]=&nArry[i][0];
        }
        psave=p[index[0]-1];
        p[index[0]-1]=p[index[1]-1];
        p[index[1]-1]=psave;
        printf("第%d行和第%d行调换后的数组为:\n",index[0],index[1]);
        for(i=0;i<4;i++)  //按顺序打印 首地址指针开头的行数字
        {
            for(j=0;j<4;j++)
            {
                printf("%d ",*(p[i]+j));
            }
            printf("\n");
        }
    }

    return 0;
}

温馨提示:答案为网友推荐,仅供参考