实现两个变量值的互换[C语言和C++的区别]

简介: 实现两个变量值的互换[C语言和C++的区别]

文章前言:

   我们讨论C语言和C++再对两个变量值的交换问题上其实是在讨论C语言和C++在进行参数传值方式上的区别。

一.准备知识:

  1. C++的引用
  2. C语言指针
  3. 定义swap交换函数

二.利用指针的方式交换两个变量的值

   一.指针的方法口诀:

          实参传地址,形参指针收

(1).实参调用接口:传地址

swap(&i, &j);

(2).形参接收接口:指针收

void swap(int *p1, int *p2)

(3).完整代码:

#include<iostream>
using namespace std;
void swap(int *p1, int *p2)
{
  int temp;
  temp = *p1;
  *p1 = *p2;
  *p2 = temp;
}
int main()
{
  int i,j;
  printf("input i and j :\n");
  scanf("%d%d", &i, &j);
  printf("after swap the values:\n");
  swap(&i, &j);
  printf("%d%2d", i, j);
  return 0;
}

执行结果:

三.利用引用的方式交换两个变量的值:

一.引用[引用即别名]的方法口诀:

          实参传变量,形参别名收

(1).实参调用接口:传递变量

swap(i, j);

(2).形参接收接口:别名收

void swap(int &p1, int &p2)

(3).完整代码:

#include<iostream>
using namespace std;
void swap(int &p1, int &p2)
{
  int temp;
  temp = p1;
  p1 = p2;
  p2 = temp;
}
int main()
{
  int i,j;
  printf("input i and j :\n");
  scanf("%d%d", &i, &j);
  printf("after swap the values:\n");
  swap(i, j);
  printf("%d%2d\n", i, j);
  return 0;
}

执行结果:

四.引用和指针传递值的区别:

  1. C++用引用的方式传值更多,因为引用是不占内存空间的。
  2. C语言用指针的方式传值更多,但是指针耗内存空间。
  3. 引用变量和变量是同时发生变化的。
目录
相关文章
|
10天前
|
存储 安全 编译器
在 C++中,引用和指针的区别
在C++中,引用和指针都是用于间接访问对象的工具,但它们有显著区别。引用是对象的别名,必须在定义时初始化且不可重新绑定;指针是一个变量,可以指向不同对象,也可为空。引用更安全,指针更灵活。
|
15天前
|
存储 C语言
C语言:普通局部变量、普通全局变量、静态局部变量、静态全局变量的区别
C语言中,普通局部变量在函数内部定义,作用域仅限于该函数;普通全局变量在所有函数外部定义,作用域为整个文件;静态局部变量在函数内部定义但生命周期为整个程序运行期;静态全局变量在所有函数外部定义,但仅在定义它的文件内可见。
29 10
|
25天前
|
存储 C语言
C语言中a 和&a 有什么区别
在C语言中,&quot;a&quot; 是一个变量的名字,代表存储在内存中的某个值。而&quot;&a&quot; 则是获取该变量的内存地址,即变量a在计算机内存中的具体位置。这两者的主要区别在于:&quot;a&quot; 操作的是变量中的值,&quot;&a&quot; 操作的是变量的内存地址。
92 23
|
25天前
|
程序员 编译器 C语言
C中的 malloc 和C++中的 new 有什么区别
在C语言中,`malloc`函数用于在运行时分配内存,返回指向所分配内存的指针,需显式包含头文件 `&lt;stdlib.h&gt;`。而在C++中,`new`不仅分配内存,还对其进行构造初始化,且直接使用类型声明即可,无需额外包含头文件。`new`还支持数组初始化,能更好地融入C++的面向对象特性,而`malloc`仅作为内存分配工具。使用完毕后,`free`和`delete`分别用于释放`malloc`和`new`分配的内存。
48 21
|
12天前
|
存储 C语言
C语言:结构体与共用体的区别
C语言中,结构体(struct)和共用体(union)都用于组合不同类型的数据,但使用方式不同。结构体为每个成员分配独立的内存空间,而共用体的所有成员共享同一段内存,节省空间但需谨慎使用。
|
16天前
|
存储 编译器 C语言
C语言函数的定义与函数的声明的区别
C语言中,函数的定义包含函数的实现,即具体执行的代码块;而函数的声明仅描述函数的名称、返回类型和参数列表,用于告知编译器函数的存在,但不包含实现细节。声明通常放在头文件中,定义则在源文件中。
|
14天前
|
存储 C语言
【c语言】数据类型和变量
本文介绍了C语言中的数据类型和变量。数据类型分为内置类型和自定义类型,内置类型包括字符型、整型、浮点型等,每种类型有不同的内存大小和取值范围。变量分为全局变量和局部变量,它们在内存中的存储位置也有所不同,分别位于静态区和栈区。通过示例代码和图解,详细阐述了这些概念及其应用。
32 1
|
16天前
|
存储 C语言
C语言指针与指针变量的区别指针
指针是C语言中的重要概念,用于存储内存地址。指针变量是一种特殊的变量,用于存放其他变量的内存地址,通过指针可以间接访问和修改该变量的值。指针与指针变量的主要区别在于:指针是一个泛指的概念,而指针变量是具体的实现形式。
|
19天前
|
存储 编译器 C语言
C语言:数组名作为类型、作为地址、对数组名取地址的区别
在C语言中,数组名可以作为类型、地址和取地址使用。数组名本身代表数组的首地址,作为地址时可以直接使用;作为类型时,用于声明指针或函数参数;取地址时,使用取地址符 (&),得到的是整个数组的地址,类型为指向该类型的指针。
|
1天前
|
程序员 C语言 开发者
pymalloc 和系统的 malloc 有什么区别
pymalloc 和系统的 malloc 有什么区别