交换函数几种写法

void swap(int *a,int *b)
{
int temp;
temp=*a;
*a=*b;
*b=temp;
}


void swap(int *a,int *b)
{
*a=*a+*b;
*b=*a-*b;
*a=*a-*b;
}
//这样写 不严谨 可能产生溢出

void swap(int *a,int *b)
{

//这样 也不严谨 如果 两个数相等 异或之后会是0 
*a=*a^*b;
*b=*b^*a;
*a=*a^*b;

}
void swap(int &a,int &b)
{
int temp;
temp=a;
a=b;
b=temp;
}


void swap(int &a,int &b)
{
a=a+b;
b=a-b;
a=a-b;
}


void swap(int &a,int &b)
{


a=a^b;
b=b^a;
a=a^b;
}





                
### C语言中正确调用函数的方法 #### 函数调用的一般形式 在C语言中,要调用一个已经定义好的函数,通常采用如下方式: ```c return_type function_name(parameter_list); ``` 这里`function_name`是要被调用的函数名称,而`parameter_list`则是传递给该函数的实际参数列表。如果函数有返回值,则可以通过变量接收这个返回的结果。 对于无参或者不需要任何输入数据的情况,可以直接写成`function_name();`的形式[^1]。 #### 参数传递的方式 当涉及到带参数的函数时,需要注意的是,在C语言中有两种主要的数据传递机制——按值传递和地址传递(指针)。前者意味着传入副本;后者则允许修改原始对象的内容。例如: - **按值传递** ```c void swap(int a, int b){ int temp; temp = a; /* 值交换 */ a = b; b = temp; } ``` 上述例子试图实现两个整数之间的互换操作,但由于采用了按值传递的方式,因此实际效果仅限于局部范围内有效,并不会影响外部环境下的原数值[^2]。 - **按地址传递** 若要真正改变实参本身,则需利用指针作为媒介来进行间接访问: ```c void swap_pointers(int *pa, int *pb){ int tmp=*pa; *pa=*pb; *pb=tmp; } // 调用swap_pointers(&a,&b),此时会更改a,b的真实值。 ``` #### 返回值处理 并非所有的函数都需要提供输出结果,但对于那些确实存在返回值得情况而言,应当合理运用其特性。比如判断条件语句或是赋值表达式的右侧部分都可以放置此类带有反馈信息的操作符或方法名。假设有一个求平方根的功能,那么就可以这样设计并应用它: ```c double sqrt_result; sqrt_result = sqrt(9); // 计算3的平方根并将得到的小数值存储起来供后续运算之用。 if(sqrt_result == 3.0){} // 利用返回值参与逻辑比较流程控制结构之中。 ``` #### 注意事项 为了确保函数调用的有效性和安全性,请遵循以下几点建议: - 确认目标函数已被声明/定义; - 检查所使用的参数数量、类型是否匹配预期签名; - 对可能引发异常的情形提前做好预防措施,如检查除零错误等边界状况; - 尽量减少不必要的全局状态依赖关系,保持接口清晰简洁易懂。 #### 特殊情形:嵌套调用 除了简单的单层调用外,还可以在一个函数体内再次发起其他子过程请求,即形成所谓的“嵌套”。不过要注意一点就是不能把新创建出来的成员放在外面已有的主体之内去定义,因为这违反了编译器关于作用范围的规定[^4]。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值