You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

为什么这段C++程序使用指针而非普通变量?代码功能如何实现?

C++代码逻辑及指针相关问题解答

代码执行流程梳理

  • 程序启动后首先进入main函数,先声明两个int类型变量a、b,用于存储后续用户输入的整数
  • 定义两个int型指针pa、pb,分别存储变量a的内存地址(&a为取地址操作符,作用是拿到变量对应的内存地址)和变量b的内存地址
  • 通过cin读取用户输入的两个整数,分别赋值给a和b
  • 调用update函数,将pa、pb两个指针作为参数传入,本质上是把a和b的内存地址传递到update函数中
  • 进入update函数后,形参a是指向main中变量a的指针,形参b是指向main中变量b的指针;这里的*a是解引用操作,作用是拿到指针指向的内存中存储的实际数值,也就是main里a的值,*b同理对应main里b的值
  • 计算两个数值的和存入sum变量,计算两个数值的差,若差为负数则乘以-1得到绝对值
  • 打印求和结果和绝对差值,update函数执行完毕后返回main函数,程序正常结束返回0

指针使用的相关说明

你当前提供的这段代码里,使用指针属于非必要的写法,直接传递普通int变量也可以实现完全相同的效果。
C++中需要使用指针/引用做函数参数的典型场景是:函数需要修改外部传入的原变量内容。因为普通的值传递会拷贝参数的副本,函数内部修改副本不会影响外部的原变量;而传递指针可以让函数直接操作原变量对应的内存空间,实现修改原变量的效果。
你这段代码里的update函数只读取了两个输入值做计算和打印,没有修改原变量的需求,所以完全可以改成值传递的写法,运行效果没有任何区别:

// 改为值传递的update函数
void update(int a, int b) {    
   int sum = a + b;
   int abs = a - b;
   if (abs < 0) abs *= -1;
   cout << sum << '\n' << abs;
}

// main中调用方式也可以简化
int main() {
   int a, b;
   cin >> a >> b;
   update(a, b);
   return 0;
}

这段代码大概率是教学场景中为了演示指针的基本定义、地址传递、解引用操作的用法,才刻意使用了指针参数,帮助初学者理解指针的基础逻辑。

内容的提问来源于stack exchange,提问作者NerdNet

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.03 14:48:04