呵呵,帮忙看一下以下函数swap的问题。答对了有十分。
看下列图,请问:1.函数swap,是怎么用的?再讲一下a,b是怎么调换值的过程?请讲的简单,详细一点。2.temp,是什么?在这里为什么有temp=*px,*py=tem...
看下列图,请问:
1.函数swap,是怎么用的?再讲一下a,b是怎么调换值的过程?请讲的简单,详细一点。
2.temp,是什么?在这里为什么有temp=*px,*py=temp
它表示什么意思?字母p与x,y等表示指针吗? 展开
1.函数swap,是怎么用的?再讲一下a,b是怎么调换值的过程?请讲的简单,详细一点。
2.temp,是什么?在这里为什么有temp=*px,*py=temp
它表示什么意思?字母p与x,y等表示指针吗? 展开
1个回答
展开全部
先来说一下,楼上说得有些问题。
1.swap函数是交换参数值的函数。但是,它不是通过交换数据的地址来实现值的交换的,而是直接交换值来实现值的交换。如果是通过交换地址,swap函数定义应该这么写:
swap()
int *px,*py;
{
int *temp; /*注意temp的类型和原题目中的不同*/
temp=px; /*注意px前面没有陪毕尘带“*”运算符*/
px=py;
py=temp;
}
在这个函数中,在调用swap(&a,&b);的时候,px就指向了原来的b变量,而py指向了原来的a变量。但是,其实a和b的值并没有交换。
而原题目中,px仍指向a变量,而py仍指向b变量,仅仅是交换了a和b的值
因为在
swap()
int *px,*py;
{
int temp;
temp=*px;
*px=*py;
py=*temp;
}
中,*px就是a,*py就是b。
2.temp是中间变量,就是把a的内容先给temp,然后把b的内容给a,最后把temp的内容再给a。如果没有temp的话,直接把b的内容给a,就会把a的原有值覆盖掉,丢失了a的原有值。
px和py是指向整型变量数纯的指针,芦禅px和py都是自定义的标识符,不能分开。从定义中可以看出来:
int *px,*py;
1.swap函数是交换参数值的函数。但是,它不是通过交换数据的地址来实现值的交换的,而是直接交换值来实现值的交换。如果是通过交换地址,swap函数定义应该这么写:
swap()
int *px,*py;
{
int *temp; /*注意temp的类型和原题目中的不同*/
temp=px; /*注意px前面没有陪毕尘带“*”运算符*/
px=py;
py=temp;
}
在这个函数中,在调用swap(&a,&b);的时候,px就指向了原来的b变量,而py指向了原来的a变量。但是,其实a和b的值并没有交换。
而原题目中,px仍指向a变量,而py仍指向b变量,仅仅是交换了a和b的值
因为在
swap()
int *px,*py;
{
int temp;
temp=*px;
*px=*py;
py=*temp;
}
中,*px就是a,*py就是b。
2.temp是中间变量,就是把a的内容先给temp,然后把b的内容给a,最后把temp的内容再给a。如果没有temp的话,直接把b的内容给a,就会把a的原有值覆盖掉,丢失了a的原有值。
px和py是指向整型变量数纯的指针,芦禅px和py都是自定义的标识符,不能分开。从定义中可以看出来:
int *px,*py;
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询