24小时热门版块排行榜    

CyRhmU.jpeg
查看: 262  |  回复: 2

zyj8119

木虫 (著名写手)


[资源] 【求助】函数的调用【已完结】

CODE:
#include
#define N 4
void swap(int *p1,int *p2)
{   int p;
   p=*p1;*p1=*p2;*p2=p;
}
void sort(int a[N][N])
{    int i,j,k;
     for(i=0;i                  for(j=0;j                          for(k=j+1;k                                  if(i%2==0?a[i][j]>a[i][k]:a[i][j]                                          swap(a[i]+j,a[i]+k);
}
void main()
{   int a[N][N]={{3,4,2,1},{8,7,5,6},{12,10,11,9},{15,14,16,13}};
    int i,j;
        sort(a);
        for(i=0;i         {   for(j=0;j             printf("%3d",a[i][j]);
            printf("\n");
        }
}

为何这个程序调用swap,使用的是swap(a+j,a+k),而不是swap(a[j],a[k])?

[ Last edited by 余泽成 on 2010-12-13 at 21:58 ]
回复此楼

» 猜你喜欢

» 本主题相关价值贴推荐,对您同样有帮助:

» 抢金币啦!回帖就可以得到:

查看全部散金贴

已阅   关注TA 给TA发消息 送TA红花 TA的回帖

smart0193

木虫 (小有名气)



zyj8119(金币+10):感谢分析,精彩! 2010-12-13 20:43:27
ajian04(金币+1):谢谢~ 2010-12-13 21:58:14
a是数组名,代表了数组元素的首地址,所以a+j和a+k是数组的第j个和第k个元素的地址,与swap函数的形式参数类型匹配(指针类型)。而a[j]和a[k]等价于*(a+j)和*(a+k),就是第j和第k个元素,与形参类型不匹配。
2楼2010-12-13 20:12:18
已阅   关注TA 给TA发消息 送TA红花 TA的回帖

zyj8119

木虫 (著名写手)


引用回帖:
Originally posted by smart0193 at 2010-12-13 20:12:18:
a是数组名,代表了数组元素的首地址,所以a+j和a+k是数组的第j个和第k个元素的地址,与swap函数的形式参数类型匹配(指针类型)。而a[j]和a[k]等价于*(a+j)和*(a+k),就是第j和第k个元素,与形参类型不匹配。

此贴结贴。
3楼2010-12-13 20:43:38
已阅   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 zyj8119 的主题更新
信息提示
请填处理意见