C语言的一个小程序问题
#include<stdio.h>viodfun(inta,int*b,int*c){a=456;*b=567;*c=789;}voidmain(){intx=10,y=...
#include<stdio.h>
viod fun(inta, int *b,int*c)
{
a=456;*b=567; *c=789;
}
void main()
{
int x=10, y=20, z=30, *p=&z;
fun(x, &y, p);
printf("%d,%d.%d",x,y,z);
}
请大家帮我分析一下为什么x的值没变,只有y和z变了 展开
viod fun(inta, int *b,int*c)
{
a=456;*b=567; *c=789;
}
void main()
{
int x=10, y=20, z=30, *p=&z;
fun(x, &y, p);
printf("%d,%d.%d",x,y,z);
}
请大家帮我分析一下为什么x的值没变,只有y和z变了 展开
展开全部
fun的传参时候要想改变原来的值需要传地址,你fun定义时候a传的是x的值改变a的值时候不改变x地址里的值,而bc传的是地址,fun里改变的是bc对应的地址里的值bc在传参过程中传的是y和z 的地址,所以最终yz的值是会改变的
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
main()
{
int c;
while(1){
printf("-------------------------------------------------\n");
printf("* 0. exit \n") ;
printf("* 1. fun1 \n");
printf("* 2. fun2 \n");
printf("* 3. fun3 \n");
printf(" -------------------------------------------------\n");
scanf("%d",&c);
switch(c)
{
case 1:fun1();break;
case 2:fun2();break;
case 3:fun3();break;
case 0:exit(0);
}
}
}
{
int c;
while(1){
printf("-------------------------------------------------\n");
printf("* 0. exit \n") ;
printf("* 1. fun1 \n");
printf("* 2. fun2 \n");
printf("* 3. fun3 \n");
printf(" -------------------------------------------------\n");
scanf("%d",&c);
switch(c)
{
case 1:fun1();break;
case 2:fun2();break;
case 3:fun3();break;
case 0:exit(0);
}
}
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询