ARTICLE DETAIL

资讯详情

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

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

在c语言中利用函数Swap进行数值交换 在c语言中利用函数Swap进行数值交换1.void Swap(int a,int b){int tmpa;ab;btmp;}int main(){int a10;int b20;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* tmpp1;p1p2;p2tmp;}int main(){int a10;int b20;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 a10;int b20;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;*p2tmp;}int main(){int a10;int b20;printf(交换前:a%d,b%d,a,b);Swap(a,b);printf(交换后:a%d,b%d,a,b);return 0;}程序正确运行成功结论重点:调用函数通过形参想修改实参的值,必须1,传指针;2.解引用。
返回列表