gpt4 book ai didi

objective-c - obj-c 中的参数通过引用传递

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

我刚刚做了一项研究,但遇到了问题

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
int r1=40,r2=5;
swap(r1,r2);

NSLog(@" temp is %d",r1);
}

void swap(int r1, int r2)
{
NSLog(@" m i 1st");
int temp;
temp=r1;
r1=r2;
r2=temp;

NSLog(@" temp is %d",r1);
}

我的交换类型发生冲突;这是正确的做法吗?谢谢!

最佳答案

如果您希望交换 r1r2,您要么必须传递指针,要么使用 C++ 引用。请注意,使用 C++ 引用将要求您深入研究 Objective-C++,在本例中这意味着将文件命名为 .mm 而不是 .m

void swap_with_pointers(int *r1, int *r2)
{
int temp;
temp = *r1;
*r1 = *r2;
*r2 = temp;
}

void swap_with_references(int &r1, int &r2)
{
int temp;
temp = r1;
r1 = r2
r2 = temp;
}

然后,使用您的实现之一,如下所示:

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
int x = 3;
int y = 4;
swap_with_pointer(&x, &y); // swap_with_references(x,y);
printf("x = %d, y = %d", x, y);
return 0;
}

输出,无论哪种方式:

x = 4, y = 3

关于objective-c - obj-c 中的参数通过引用传递,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5865540/

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