实现两个变量值的互换[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. 引用变量和变量是同时发生变化的。
目录
相关文章
|
8天前
|
安全 编译器 C语言
C++入门1——从C语言到C++的过渡
C++入门1——从C语言到C++的过渡
32 2
|
4天前
|
存储 C语言
C语言中a 和&a 有什么区别
在C语言中,&quot;a&quot; 是一个变量的名字,代表存储在内存中的某个值。而&quot;&a&quot; 则是获取该变量的内存地址,即变量a在计算机内存中的具体位置。这两者的主要区别在于:&quot;a&quot; 操作的是变量中的值,&quot;&a&quot; 操作的是变量的内存地址。
43 23
|
4天前
|
程序员 编译器 C语言
C中的 malloc 和C++中的 new 有什么区别
在C语言中,`malloc`函数用于在运行时分配内存,返回指向所分配内存的指针,需显式包含头文件 `&lt;stdlib.h&gt;`。而在C++中,`new`不仅分配内存,还对其进行构造初始化,且直接使用类型声明即可,无需额外包含头文件。`new`还支持数组初始化,能更好地融入C++的面向对象特性,而`malloc`仅作为内存分配工具。使用完毕后,`free`和`delete`分别用于释放`malloc`和`new`分配的内存。
41 21
|
3天前
|
存储 缓存 C语言
C语言:链表和数组有什么区别
C语言中,链表和数组是两种常用的数据结构。数组是一种线性结构,元素在内存中连续存储,通过下标访问,适合随机访问且大小固定的情况。链表由一系列不连续的节点组成,每个节点存储数据和指向下一个节点的指针,适用于频繁插入和删除操作的场景,链表的大小可以动态变化。
|
3天前
|
编译器 C语言
C语言:typedef 和 define 有什么区别
在C语言中,`typedef`和`#define`都是用来创建标识符以简化复杂数据类型或常量的使用,但它们之间存在本质的区别。`typedef`用于定义新的数据类型别名,它保留了数据类型的特性但不分配内存。而`#define`是预处理器指令,用于定义宏替换,既可用于定义常量,也可用于简单的文本替换,但在编译前进行,过度使用可能导致代码可读性下降。正确选择使用`typedef`或`#define`可以提高代码质量和可维护性。
|
9天前
|
C语言 C++
C 语言的关键字 static 和 C++ 的关键字 static 有什么区别
在C语言中,`static`关键字主要用于变量声明,使得该变量的作用域被限制在其被声明的函数内部,且在整个程序运行期间保留其值。而在C++中,除了继承了C的特性外,`static`还可以用于类成员,使该成员被所有类实例共享,同时在类外进行初始化。这使得C++中的`static`具有更广泛的应用场景,不仅限于控制变量的作用域和生存期。
34 10
|
3天前
|
移动开发 C语言
C语言:&&和&、||和|有什么区别
在C语言中,&&和||是逻辑运算符,分别表示逻辑与(AND)和逻辑或(OR),它们用于连接两个布尔表达式,只有当两边都为真时&&返回真,||在至少一边为真时返回真;&和|是位运算符,对应地进行位级的与、或操作,它们对操作数的二进制位进行逐位处理。&&和||具有短路特性,而&和|没有。
|
3天前
|
Java 编译器 C语言
【一步一步了解Java系列】:探索Java基本类型与C语言的区别
【一步一步了解Java系列】:探索Java基本类型与C语言的区别
13 2
|
4天前
|
存储 C语言
C语言:设置地址为 0x67a9 的整型变量的值为 0xaa66
在C语言中,可以通过指针操作来实现对特定地址的访问和赋值。要将地址为 0x67a9 的整型变量值设为 0xaa66,可以先定义一个指向该地址的指针,并通过该指针对该内存位置进行赋值操作。需要注意的是,直接操作内存地址具有一定风险,必须确保地址合法且可写。代码示例应考虑字节序及内存对齐问题。
|
7天前
|
C语言
C语言形参和实参的区别
在C语言中,形参(形式参数)与实参(实际参数)有着明确的角色区分。形参是在函数定义中声明的参数,用于接收调用函数时传入的数据;实参则是调用函数时传递的具体值或变量。简言之,实参提供数据,形参接收并处理这些数据。