解释为什么不对

#include<stdio.h>
#include<stdlib.h>
void swap(int *p,int *q)
{
int *m;
*m=*p;
*p=*q;
*q=*m;

}
main()
{
int a,b;
scanf("%d,%d",&a,&b);
swap(&a,&b);
printf("%d,%d",a,b);
}
1,2
2,2请按任意键继续. . .
[Warning] C:\Users\Lenovo\Documents\C-Free\Temp\未命名1.cpp:17:2: warning: no newline at end of file 这句话说实话弄不太明白
总结;在编译过程中虽然没弄明白警告语句,但通过编译结果不难看出,子函数中*m并没有把值传给*q,以至于输出的结果成了2个相同的q值,那么在定义int *m就是错误的,他无法将自身的值再传出去,造成了p的值没有传给q,因而他们的值都变成了q的值,则返还给主函数a,b的值就全是q的值。

 

#include<stdio.h>
#include<stdlib.h>
void swap(int *p,int *q)
{
int *m;
m=p;
p=q;
q=m;

}
main()
{
int a,b;
scanf("%d,%d",&a,&b);
swap(&a,&b);
printf("%d,%d",a,b);
}


1,3
1,3请按任意键继续. . .
总结;在这个子函数中是因为p与q的交换,是swap中的交换,而并没有改变main中a与b的值((没有交换main中a与b的地址)。因此在输出的结果中,a与b的值并没有受到子函数的影响,没有进行交换。所以输出结果不是正确的.

 

 

 

#include<stdio.h>
#include<stdlib.h>
main()
{
int comp(int x,int y);//函数的说明
int (*p)(int x,int y);//定义指向函数的指针变量p
int a,b,c;
p=comp;//使p指向comp函数
scanf("%d,%d",&a,&b);
c=(*p)(a,b);//调用comp函数
printf("%d",c);
}
int comp(int x,int y)//定义comp函数
{
int z;
if(x>y)
z=x;
else
z=y;
return(z);
}


1,2
2请按任意键继续. . .
总结:在“定义指向函数指针变量p”时,并不清楚*p(int, int)的意义,*p后加(int,int)是做什么用的。

 

转载于:https://www.cnblogs.com/dingyubin/p/6621576.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值