永发信息网

C语言的一个小问题,帮个忙

答案:1  悬赏:80  手机版
解决时间 2021-07-20 11:10

以下问题是谭浩强的C语言教程中的一个例子程序,将十个数按倒序排列:

#include<stdio.h>
void inv(int *x,int n)
{
int temp,*i,*j,m=(n-1)/2,*p;
i=x;j=x+n-1;p=x+m;
for(;i<=p;i++,j--)
{
temp=*i;*i=*j;*j=temp;
}
return;
}
main()
{
int i,a[10]={0,1,2,3,4,5,6,7,8,9};
printf("The original array:\n");
for(i=0;i<10;i++){
printf("%d",a[i]);
printf("\n");}
inv(a,10);
printf("The array has been inverted:\n");
for(i=0;i<10;i++){
printf("%d",a[i]);
printf("\n");}
}

最佳答案
这貌似是个数组倒序的程序吧
int temp,*i,*j,m=(n-1)/2,*p;
i=x;j=x+n-1;p=x+m;
首先 函数传入了 字符串的长度 跟 字符串的首地址
那么i=x相当于把字符串的首地址给了i
j=j=x+n-1 相当于把字符串的最后一个字符的地址给了j
也就是说现在i指向了字符串的第一个元素
然后j就指向了最后一个元素
然后第一个和最后一个交换
然后i++ j-- 这时候i指的就是第二个元素 j就是倒数第二个
如此交换 只要交换数组长度的一半 那么整个数组就倒序了
这么讲不知道你理解了没有呢
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
丝路英雄把主城升级到20要多久?
为什么外省人在广东素质这么差,引起广东人反
地下城25号几点钟开新区
天秤女怎么让天秤男喜欢
杭州萧山 那里可以买到索尼WX1 价格是多少 汇
我想买笔记本,但不晓的是买戴尔、惠普还是联
谁有自用的N73要卖的8成新以上?
帮我把这几段英语连成一段话 your,foot,touch
谁知道卓依婷死了没有?
谁有SUPER JUNIOR 的SORRYSORRY的改编版~
雪花飞舞的情景,用两个比喻句来说!
谁能给我一个QQ爱墙的种子,谢谢!!!
除了clot之外还有什么潮品牌?
俗话说得好,人不轻狂枉少年,那么~~~轻狂;
武侠类梦幻电视剧
推荐资讯
DNF漫游怎么加点穿什么装备?
钝白加点问题
《暮光之城2.新月》11月20日出,那什么时候可
诛仙2,我现在练的是青云,到了60级了,不过
谁能告诉我怎样忘掉一个人?
男朋友过生日送什么比较好?
100极品体木水爪值多少钱
经期量少,第一天会很痛,经常推迟是怎么回事
好的笔名,一眼就能引起别人注意的笔名
已经的已这个字的部首是什么
飞船降落时动能和机械能的变化
天语手机为什么进相册上面显示无存储卡,然后
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?