gpt4 book ai didi

C中改变变量的值

转载 作者:太空宇宙 更新时间:2023-11-04 00:28:53 24 4
gpt4 key购买 nike

Why should one change the value of the main variable and NOT the COPY of the variable.

我有一个方法

int plusInt(int x){
return ++x;
}

调用此函数时,会创建一个新的堆栈帧,其中包含x 的副本不是原始 变量。所以这会改变这个副本的值(value)?

问:如果我想更改原始变量的值,我可以使用指向它的指针然后增加一个值,对吗?例如:

int plusIntPointer(int *x){
return ++*x;
}

但是有什么用/为什么有人想要更改原始变量的值而不是副本?

最佳答案

So this changes this copy's value?

确切地说,因为函数只有副本,而不是原始变量,作为局部变量。

If I want to change the value of the original variable I use a pointer to it and then increase a value right?

又对了。使用指针的原因是将变量的地址传递给函数。

But what is the use/why would someone want to change the value of the original variable and not the copy?

原因是在函数结束并返回调用函数后,对副本的任何更改都将丢失。

例如,假设您要使用一个函数来交换两个变量的值。然后,您必须更改原始 值。你的功能应该是这样的:

void swap(int *x, int *y)
{
int temp = *x;
*x = *y;
*y = *temp;
}

你应该这样调用它:

swap(&a, &b);

这样,即使您返回到调用函数,更改也会保留。如果您只是更改副本,当您返回到调用函数时,变量将不会交换值!!!

关于C中改变变量的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41671526/

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