为什么c++;需要指针才能工作(按值传递、按引用传递) 我在C++中有个问题。我是新手,在C++中用代码编写代码,更具体地说,我正在尝试实现一些函数(1,增加2个数,1个交换2个数)。
我意识到实现加法函数的代码不需要指针(void func),而swap函数只有在我在函数的参数和用于实现它的变量(int-type func)中使用指针之后才能工作 关于为什么会发生这种情况,有什么建议吗?为什么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(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++通常会转向使用引用的解决方案,尤其是