为什么c++;需要指针才能工作(按值传递、按引用传递) 我在C++中有个问题。我是新手,在C++中用代码编写代码,更具体地说,我正在尝试实现一些函数(1,增加2个数,1个交换2个数)。

为什么c++;需要指针才能工作(按值传递、按引用传递) 我在C++中有个问题。我是新手,在C++中用代码编写代码,更具体地说,我正在尝试实现一些函数(1,增加2个数,1个交换2个数)。,c++,function,pointers,C++,Function,Pointers,我意识到实现加法函数的代码不需要指针(void func),而swap函数只有在我在函数的参数和用于实现它的变量(int-type func)中使用指针之后才能工作 关于为什么会发生这种情况,有什么建议吗? 它是否与通过值或引用传递有关?如果是,我们什么时候真的需要在这些函数中使用指针 函数接受参数,因为它们不能直接访问变量。当您仅将值传递给函数(即,void func(int a,int b){…})时,函数仍然无法访问您的变量。您所做的基本上是在函数中创建新变量,这些变量的值与您传入的值相同

我意识到实现加法函数的代码不需要指针(void func),而swap函数只有在我在函数的参数和用于实现它的变量(int-type func)中使用指针之后才能工作

关于为什么会发生这种情况,有什么建议吗?
它是否与通过值或引用传递有关?如果是,我们什么时候真的需要在这些函数中使用指针

函数接受参数,因为它们不能直接访问变量。当您仅将值传递给函数(即,
void func(int a,int b){…}
)时,函数仍然无法访问您的变量。您所做的基本上是在函数中创建新变量,这些变量的值与您传入的值相同。

但是,当您传递指针时,您告诉函数实际变量在内存中的位置,因此即使变量不在其范围内,它也可以对其进行修补(这很容易出错,这也是高级语言没有用户级指针的原因)。

根据您的标题,函数不需要使用指针:

int add(int a, int b)  
{
  return a + b;
}
<>在C++中,传递参数的规则是传递变量的副本,除非另外告诉。按副本传递(也称为按值传递)时,不能修改参数

<>而不是通过大型数据结构的拷贝(任何不适合处理器登记的东西)C++允许你传递对对象的引用。参考通常比它所指的对象小得多。此外,通过引用传递允许您修改原始对象:

bool divide(int a, int b, float& result)
{
  if (b == 0) return false;
  result = static_cast<double>(a) / static_cast<double>(b);
  return true;
}
bool除法(整数a、整数b、浮点和结果)
{
如果(b==0)返回false;
结果=静态铸型(a)/静态铸型(b);
返回true;
}

通过指针传递与通过引用传递类似。但是,指针可以指向任何地方

您能提供一些示例代码吗?这只是很多没有特定上下文的单词,C++通常会转向使用引用的解决方案,尤其是 CONST> /COD>引用,但是它仍然可以在适当或必要的时候使用指针。你需要在这里给我们一个更具体的例子来分析。你可以制作一个没有指针的交换函数,但这只会交换函数内部的变量[而不是函数外部的变量]。为了在它之外交换变量,您需要传递这些变量的地址。@Abdelbakiboutche非常感谢!!非常感谢似乎是这样的非常感谢!