我想知道是否有任何方法可以使用pass by value更新原始值。
此外,我想知道是否可以将更新的地址返回主
这里我不想使用pass by reference来交换main中的原始值。
#include<stdio.h>
int a = 100;
int f =200;
int *p, * q;
swap(int, int);
main()
{
printf("%d %d\n", a,f);
swap(a, f);
printf("%d %d\n",a ,f); //values remain same here how to change them
}
swap(int a, int f)
{
int t;
p=&a;
q=&f;
t=*p;
*p=*q;
*q= t;
printf("%d %d\n",a ,f);
}
答案 0 :(得分:2)
我想知道是否有任何方法可以使用pass by value更新原始值。
是的,你需要传递一个指针:
void swap(int* a, int* b)
{
int temp = *a;
*a = *b;
*b = temp;
}
并称之为:
swap(&a, &f);
请注意,C中没有传递引用,这是C ++功能。在C 中,所有(包括指针)都按值传递。
并且值传递意味着在C中使用 copy ,因此无法修改传递的内容。
此外,我想知道是否可以将更新的地址返回主
是的,你可以。只需将函数返回类型更改为指针类型,然后添加一个带有所选变量地址的return语句。