c语言指针程序题,程序如下,答案是3,6。我想知道为什么答案是3,6而不是6,3?希望您能帮我详细解答一下。
#include<stdio.h>voidfun(int*a,int*b){int*k;k=a;a=b;b=k;}voidmain(){inta=3,b=6,*x=&a,...
#include <stdio.h>
void fun(int * a,int * b)
{
int *k;
k=a;a=b;b=k;
}
void main( )
{
int a=3,b=6,*x=&a,*y=&b;
fun(x,y);
printf(“%d,%d”,a,b);
} 展开
void fun(int * a,int * b)
{
int *k;
k=a;a=b;b=k;
}
void main( )
{
int a=3,b=6,*x=&a,*y=&b;
fun(x,y);
printf(“%d,%d”,a,b);
} 展开
4个回答
展开全部
呵呵,你被主函数中的a,b和子函数中的a,b所混淆了!
(1)主函数中的a,b是变量名,a=3,b=6,内容为3和6 。
(2)子函数中的a,b是指针变量,是指向整型变量的指针变量【(int * a,int * b)】。k也是指针变量,调用子函数fun时【fun(x,y)】,是将a,b的地址传过来了,不是a,b的值!在子函数内部,
k=a;a=b;b=k;交换的是就是的地址(注意:这里的a,b实际上是x,y,也就是主函数中的&a,&b),也就是将主函数中的变量地址交换了而已,就是将变量换个地方而已,变量名和变量的值都没有变!
指针变量是C语言中比较难的一个知识点,尤其是指向指针的指针、指向多维数组的指针。希望你多看书,多练习,认真领会。
(1)主函数中的a,b是变量名,a=3,b=6,内容为3和6 。
(2)子函数中的a,b是指针变量,是指向整型变量的指针变量【(int * a,int * b)】。k也是指针变量,调用子函数fun时【fun(x,y)】,是将a,b的地址传过来了,不是a,b的值!在子函数内部,
k=a;a=b;b=k;交换的是就是的地址(注意:这里的a,b实际上是x,y,也就是主函数中的&a,&b),也就是将主函数中的变量地址交换了而已,就是将变量换个地方而已,变量名和变量的值都没有变!
指针变量是C语言中比较难的一个知识点,尤其是指向指针的指针、指向多维数组的指针。希望你多看书,多练习,认真领会。
展开全部
在fun函数中k=a;a=b;b=k;只是指针地址交换了,而实际空间的内容没有交换。当fun函数结束之后,a,b,k被释放,对main中的a,b没影响
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
void main( )
{
int a=3,b=6,*x=&a,*y=&b;
fun(x,y); //这个函数将变量a,b的地址传给子程序fun,fun交换传过去的两个值,并不改变a,b的值。
printf(“%d,%d”,a,b);//原样输出a,b的值。
}
{
int a=3,b=6,*x=&a,*y=&b;
fun(x,y); //这个函数将变量a,b的地址传给子程序fun,fun交换传过去的两个值,并不改变a,b的值。
printf(“%d,%d”,a,b);//原样输出a,b的值。
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
#include <stdio.h>
void fun(int * a,int * b)
{
int k;
k=*a;*a=*b;*b=k;
}
void main( )
{
int a=3,b=6,*x=&a,*y=&b;
fun(x,y);
printf("%d,%d\n",a,b);
}
void fun(int * a,int * b)
{
int k;
k=*a;*a=*b;*b=k;
}
void main( )
{
int a=3,b=6,*x=&a,*y=&b;
fun(x,y);
printf("%d,%d\n",a,b);
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询