gpt4 book ai didi

C 指针在函数中引用另一个指针

转载 作者:行者123 更新时间:2023-11-30 15:23:22 25 4
gpt4 key购买 nike

我发现,如果您将一个指针地址分配给函数中另一个指针的地址,它不会改变 main 中的 in 值,然而,通过在 main 中做同样的事情,它会改变。那么这是什么原因呢?

void func(int *a, int *b){
b = a;
}


int main(){
int i= 5, k =6, *a=&i, *b=&k;
printf("%d %d\n",*a,*b); //output 5 6
b = a;
printf("%d %d\n",*a,*b); //output 5 5

a=&i;
b=&k;
func(a,b);
printf("%d %d\n",*a,*b); //output 5 6
printf("%d %d\n",*a,*b); //output 5 6
}

最佳答案

在这个函数中

void func(int *a, int *b){
b = a;
}

参数a和b是函数的局部变量。退出该函数后它们将被销毁。该函数处理参数的副本。如果您希望函数本身更改原始参数,则必须将指针传递给它们。例如

void swap(int **a, int **b){
int *tmp = *a;
*a = *b;
*b = tmp;
}

关于C 指针在函数中引用另一个指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28820192/

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