C语言交换两个数的值与形参与实参理解

C Simple Swap Program – Assignments
通过赋值来实现交换变量
vi swap_simple0.c
#include <stdio.h>

int main() {
   int a = 23, b = 47;
   int t;
   printf("Before. a: %d, b: %d\n", a, b);
   t = a;
   a = b;
   b = t;
   printf("After.  a: %d, b: %d\n", a, b);
   return 0;
}
cc -o swap_simple0 swap_simple0.c
swap_simple0
Before. a: 23, b: 47
After.  a: 47, b: 23
C Simple Swap Program – Exclusive-Or
通过异或来实现,新建 swap_simple1.c
#include <stdio.h>

int main() {
   int a = 23, b = 47;
   
   printf("Before. a: %d, b: %d\n", a, b);
   a ^= b;
   b ^= a;
   a ^= b;
   printf("After.  a: %d, b: %d\n", a, b);
   return 0;
}
% cc -o swap_simple1 swap_simple1.c
% swap_simple1
Before. a: 23, b: 47
After.  a: 47, b: 23
C Swap Program – Fails
这样做是不行的,所有的交换都在swap中,但是这个交换没有返回值,当i,j 交换后,随即释放,不会对a,b 有任何影响。
说点题外化,这个swap函数在,就像你曾经做过的春梦,你和女神在梦中一番云雨。也互相交换了体液但是当梦醒来,一切美梦中的意象瞬间幻灭,女生也并没有怀上你的孩子,对现实没有任何影响。
#include <stdio.h>

void swap(int i, int j) {
   int t = i;
   i = j;
   j = t;
}

int main() {
   int a = 23, b = 47;
   printf("Before. a: %d, b: %d\n", a, b);
   swap(a,b);
   printf("After.  a: %d, b: %d\n", a, b);
   return 0;
}
% cc -o swap0 swap0.c
% swap0
Before. a: 23, b: 47
After.  a: 23, b: 47
我们说C 是一个古老的语言,相当古老,在C中函数只能有一个返回值,我们可以在python 中通过返回多个值实现交换如下,在C中我们一般在代码中不操作数值,而是通过操作指针来操作数据
在Python中,这个swap函数有返回值,return a,b 返回值是什么,是梦与现实的桥梁,return将你梦中的结晶带回了现实。
def swap(a,b):
	c=a
	a=b
	b=c
	return a,b
def main():
	a=23
	b=47
	a,b=swap(a,b)
	print('a=',a,'b=',b)

main()
a= 47 b= 23
C Swap Program with Pointers – Works
这段代码能够帮助我们理解指针的含义
swap这样写,你的女神梦见你,托梦给了你,女生将她房间的地址告诉了你,你梦游过去了,虽然你以为你在做梦,实际上你肉身翻墙进入了女神的闺房,一番xxoo…,女神怀孕了
#include <stdio.h>

void swap(int *i, int *j) {
   int t = *i; //将*i(a)的数值赋值给t
   *i = *j;    //*将j(b)的数值赋值给i(&a)所指向的内存空间
   *j = t; //*将t的数值赋值给j(&b)所指向的内存空间
}

void main() {
   int a = 23, b = 47;
   printf("Before. a: %d, b: %d\n", a, b);
   swap(&a, &b);
   printf("After . a: %d, b: %d\n", a, b);
}
% cc -o swap1 swap1.c
% swap1
Before. a: 23, b: 47
After.  a: 47, b: 23
引用是C++引入的新语言特性,是C++常用的一个重要内容之一,
曾经有人说过c++是上古神兽(C)下的一个蛋,此蛋青出于蓝,禀赋异常强大,神蛋可以通过冥想意淫让女神怀孕,引用即是意淫。。。。。

#include <iostream>
using std::cout;

void swap(int& i, int& j) {
    int t = i;
    i = j;
    j = t;
}

int main() {
    int a = 23, b = 47;
    cout << "Before. a: " << a << ", b: " << b << "\n";
    swap(a, b);
    cout << "After.  a: " << a << ", b: " << b << "\n";
    return 0;
}
% CC -o swap_CC swap.cpp
% swap_CC
Before: a: 23, b: 47
After:  a: 47, b: 23
代码的本质是哲学,是诗篇,而函数就是码农的春梦和意淫…

参考链接

猜你喜欢

转载自blog.csdn.net/luoganttcc/article/details/113485553