从字符串头到串中心,头尾字符分别交换就可以,如下reverse
函数(自己实现)
void
reverse(char
*s)
{
int
len
=
strlen(s)
-
i
0;
if
(len
0)
return;
for(;;;)
char
t
s[i];
s[i]
s[len-i];
s[len-i]=t;
i++;
if(len
i)
break;
}
第一条语句在不同的编译器下可能会有不同的结果的,因为这里存在一个顺序点的问题.
即:
在执行顺序中某些指定的点叫做顺序点.这个点上,之前所有的赋值所产生的副作用都已发生完成,并且在其后的赋值不能在该点产生任何副作用.
说白了就是:
最好不要试图在一行语句里多次改变一个变量的值,否则编译器可以随便定义改变的时机和次序
参考链接:
请注意其中顺序点的定义和介绍,和你的问题相关的描述应该是"在函数所有参数赋值之后但在函数第一条语句执行之前"这句话
首先需要两个中间变量作为交换的媒介.程序如下
:
main()
*p=null,*s=null;/*x为交换中介指针变量,初始化为空*/
*p=*x;
*s=*y;
*x=*z;
*y=*p;
*z=*s;
printf("%d
%d
%d",a,b,c);
getch();
其实交换数不需要用到指针,直接运用变量本身也可交换.当然指针交换的好处在于函数内部可以实际交换两个数的值.
假定数据长n,输入一个整数m,
①.、使数组的后n-m个元素移到前边,前m-1个元素在数组中从最后位置倒序排列
#include
"stdio.h"
i,n,m,t,j;
scanf("%d",n);
for(i=0;in;i++)d[i]=i;
scanf("%d",m);
printf("\n输出调整前的数据:\n");
for(i=0;in;i++)printf("%d
",d[i];
//调整程序开始
for(i=0;im;i++)
{//n-m个数前移了
t=d[0];
for(j=1;jn;j++)d[j-1]=d[j];
d[n-1]=t;
{//倒序
t=d[n-1-i];
d[n-1-i]=d[m+i];
d[m+i=t;
printf("\n输出调整后的数据:\n");
其实就是内存地址的内容互换了;
p1 = a1,就是取了a1在内存中的地址给p1,这个指针,那么p1就指向了a1的那块内存.
然后*p1是取p1内存中的内容,也就是a1,赋值给a;
解答:
①? 注意形式参数和实际参数的区别,主函数中的x,y是实际参数,swap函数中的a,b是形式参数.他们各有自己的存储空间,互不干扰.
为了更形象,可以用图表示它们的关系:
可见,交换的只是swap函数中的a,b值,对主函数中的a,b值没有影响.
以上就是土嘎嘎小编为大家整理的c语言调换顺序函数相关主题介绍,如果您觉得小编更新的文章只要能对粉丝们有用,就是我们最大的鼓励和动力,不要忘记讲本站分享给您身边的朋友哦!!