gpt4 book ai didi

c++ - 如果静态变量只为程序的整个部分存储一个拷贝,为什么我不能使用静态变量交换 2 个数字?

转载 作者:行者123 更新时间:2023-11-30 00:44:04 24 4
gpt4 key购买 nike

如果静态变量对于程序来说只有一份。那么为什么不能使用另一个函数交换 2 个数字呢?

代码:

#include <iostream>

void swap(int, int);

int main()
{
static int a = 1;
static int b = 2;
swap(a, b);
std::cout << "a = " << a << std::endl << "b = " << b << std::endl;
std::cin.get();
}

void swap(int a,int b)
{
int temp = a;
a = b;
b = temp;
std::cout << "a = " << a << std::endl << "b = " << b << std::endl;
}

最佳答案

由于“swap”函数将参数作为值传递,变量的拷贝被传递给 swap 函数,它只会交换其局部变量“a”和“b”(作为参数传递)而不是静态变量从主传递。

Swap 应该将参数作为引用,如下所示。

#include <iostream>

void swap(int&, int&);

int main()
{
static int a = 1;
static int b = 2;
swap(a, b);
std::cout << "a = " << a << std::endl << "b = " << b << std::endl;
std::cin.get();
}

void swap(int &a,int &b)
{
int temp = a;
a = b;
b = temp;
std::cout << "a = " << a << std::endl << "b = " << b << std::endl;
}

请注意,函数中定义的静态变量在声明它的函数的后续调用中保留其值。

关于c++ - 如果静态变量只为程序的整个部分存储一个拷贝,为什么我不能使用静态变量交换 2 个数字?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51012012/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com