这次我们要透过一个简单的函数swap入理解函数传参的本质以及在C中如何选择传参方式。 首先,先来看第一段程序 void swap(int x, int y) { int temp = y; y = x; x = temp; } 通过main函数的调用,我们发现x,y并未实现交换: int main() { int x = 1; int y = 37; swap(x, y); printf("...
在C语言中,“swap”通常指的是一个用于交换两个变量值的函数。这个函数并不是C语言标准库的一部分,因此需要程序员自行实现。 swap函数的一般形式如下: c void swap(Type *a, Type *b) { Type temp = *a; *a = *b; *b = temp; } 其中,Type是变量的类型,a和b是指向要交换的变量的指针。这个函数...
swap(&x, &y); printf("x = %d, y = %d\n", x, y); // 输出:x = 5, y = 10 return 0; }解释:虽然函数内部交换了指针指向的值,但函数外部的变量x和y并没有被改变。💡 错误示例2:修改了错误的指针值 错误代码: c void swap(int *a, int *b) { int temp = *a; *a = *b; *...
调用swap2打印结果:before x = 100 y = 900 before a = 0x7fff964a10e0 b = 0x7fff964a10e4 after a = 0x7fff964a10e0 b = 0x7fff964a10e4 after x = 900 y = 100 分析:swap2函数将地址中的数值进行交换,地址并没有交换 调用swap3打印结果:before x = 100 y = 900 before a = 0x7ffc9979...
swap(&x, &y); printf("After swap: x = %d, y = %d\n", x, y); return 0; ``` 这里有三个不同的实现方式来实现swap函数。第一种方式使用了数学运算,通过将两个变量相加,并将结果赋值给第一个变量,然后通过将第一个变量减去第二个变量,并将结果赋值给第二个变量,最后通过将第一个变量减去第二...
这是因为函数调用是传值调用,参数的副本在函数内部被交换,而原始参数保持不变。💡 为了使swap函数的修改生效,我们需要以某种方式返回修改后的值。这通常可以通过使用指针或引用来实现。但是,请注意,这样做可能会引入额外的复杂性并可能影响代码的可读性。
swap(&a , &b); } 对于程序一,在它运行完成之后,a,b的值并没有发生变化。 原因是swap函数里面的x,y都是形参,函数里面对形参的地址进行了交换,这并没有交换main函数中的a,b这两个变量指向的地址。 程序二:交换值 #include <stdio.h>voidswap(int*x ,int*y){int*temp; ...
c语言之Swap函数的初次运用 #include <stdio.h> void Swap(int *pa, int *pb)//void函数为空函数,不需要返回值 { int tem = 0; tem = *pa; *pa = *pb; *pb= tem; } int main() { int a = 10; int b = 20; Swap(&a,&b);...
Swap - 交换函数 cmp - 比较函数 qsort - 排序主体 qsort函数是C语言中的一个标准函数,用于对数组进行快速排序。其函数原型如下: voidqsort(void*base,size_tnmemb,size_tsize,int(*compar)(constvoid*,constvoid*)); 参数解释: base:指向数组首元素的指针。