拓十年匠心定制 · 商业建站与技术教学双线并行 咨询热线:400-886-1026 service@lmnt.cn
ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

在c语言中利用函数Swap进行数值交换

在c语言中利用函数Swap进行数值交换

在c语言中利用函数Swap进行数值交换

1.

void Swap(int a,int b)

{

int tmp=a;

a=b;

b=tmp;

}
int main()

{
int a=10;

int b=20;

printf("交换前:a=%d,b=%d",a,b);

Swap(a,b);

printf("交换后:a=%d,b=%d",a,b);

return 0;

}

运行结果为:

上面程序运行未成功的原因为:

把a,b的值传给函数Swap,只是将形式参数改变,a,b所对应的地址不变,即a,b的实参并没有改变。

2.

void Swap(int* p1,int* p2)

{
int* tmp=p1;

p1=p2;

p2=tmp;

}
int main()

{

int a=10;

int b=20;

printf("交换前:a=%d,b=%d'',a,b);

Swap(a,b);

printf("交换后:a=%d,b=%d",a,b);

return 0;

}

运行结果为:

上面程序运行未成功的原因为:

没有进行解引用访问a,b的值,没有进行交换。

3.

void Swap(int* p1,int* p2)

{

int* tmp;//野指针

*tmp=*p1;

*p1=*p2;

*p2=*tmp;

}
int main()

{

int a=10;

int b=20;

printf("交换前:a=%d,b=%d'',a,b);

Swap(&a,&b);

printf("交换后:a=%d,b=%d'',a,b);

return 0;

}

程序编译出错,老的编译器(vs2012,DEVC++,VC6.0等)程序能运行但在*tmp=*p1;这句崩溃。

野指针:也称悬空指针,悬挂指针,你没有访问权限的地址(指针)。

4.

void Swap(int* p1,int* p2)

{
int tmp;

tmp=*p1;

*p1=*p2;

*p2=tmp;

}
int main()

{
int a=10;

int b=20;

printf("交换前:a=%d,b=%d'',a,b);

Swap(&a,&b);

printf("交换后:a=%d,b=%d'',a,b);

return 0;

}

程序正确,运行成功:

结论:

重点:调用函数通过形参想修改实参的值,必须1,传指针;2.解引用。

返回列表