十年网站开发经验 + 多家企业客户 + 靠谱的建站团队
量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决
int
创新互联公司长期为数千家客户提供的网站建设服务,团队从业经验10年,关注不同地域、不同群体,并针对不同对象提供差异化的产品和服务;打造开放共赢平台,与合作伙伴共同营造健康的互联网生态环境。为惠安企业提供专业的成都网站建设、成都网站制作,惠安网站改版等技术服务。拥有10年丰富建站经验和众多成功案例,为您定制开发。
**p=a
这个是把int
*型赋值给int
**型。
本身类型就不匹配。
然后
*p=a
相当于把数组a的首地址
赋值给*p
也就是a[0]
这个等效于
把a的首地址
赋值给了a的第一个元素。即
a[0]
=
(int
)a;
之后输出**p
=
a[0]
这里会输出a的首地址值。
至于后续的
*p=b
输出*
p值
会是2.
您好,针对这个问题
Status
InOrderTraverse(BiTree
T
,Status(*Visit)(TElemType
e))函数中第2个参数是一个指向函数的指针,这样做的目的是为了程序的灵活性。试想如果给你一个整型数100,要求分别按照10进行、16进制输出,你可以写一个输出10进制函数与输出16进制函数,当你有需要输出16进制时,只需要将16进制函数地址传给Visit就行,而不需要改变InOrderTraverse函数,这种做法灵活,也符合软件工程编程思想。
另外,InitStack(S);
就是函数调用,这种就在InOrderTraverse已经写死了,如果有几种初始化情况的话,就得在InOrderTraverse增加判断条件来加以区分,这样增加了代码量。
希望我的回答对您帮助!
swap2和swap3没有写返回值
scanf里"%d,%d,%d"最好不要写逗号
main()里的参数用不到最好不写
swap2(p1,p2);
swap2(p1,p3);
swap2(p2,p3);
swap2的参数是指针.p1,p2,p3本身就是指针了.为什么还要?
如果函数定义在main后要声明函数
修改如下
#include stdio.h
#include stdlib.h
void swap2(int *p1,int *p2);
void swap3(int *p1,int *p2,int *p3);
int main() {
int a,b,c;
scanf("%d%d%d",a,b,c);
swap3(a,b,c);
printf("%d\n%d\n%d\n",a,b,c);
return 0;
}
void swap2(int *p1,int *p2){
int temp;
if(*p1*p2){
temp=*p1;
*p1=*p2;
*p2=temp;
}
}
void swap3(int *p1,int *p2,int *p3){
swap2(p1,p2);
swap2(p1,p3);
swap2(p2,p3);
}