Objective-C是按值传递还是按引用传递?

 gaoming1010_143 发布于 2023-01-19 17:56

因为我们总是使用指针来定义变量,所以我想知道Objective-C是否是"按值传递",因为像Java一样,实际值将通过使用它的引用来传递.

但是,由于它似乎是在C之上构建的,它是否具有C的所有功能?

1 个回答
  • C不支持pass-by-reference和Objective-C,作为C的严格超集也不支持.

    在C(和Objective-C)中,您可以通过传递指针来模拟传递引用,但重要的是要记住,您仍然在技术上传递一个值,该值恰好是指针的值.

    因此,在Objective-C(和C,就此而言)中,没有其他语言(例如C++或Java)中的引用概念.

    这可能令人困惑,所以让我试着更清楚(我将使用普通的C,但是 - 再次 - 它在Objective-C中没有改变)

    void increment(int *x) {
       *x++;
    }
    
    int i = 42;
    increment(&i); // <--- this is NOT pass-by-reference.
                   //      we're passing the value of a pointer to i
    

    另一方面,在C++中我们可以做到

    void increment(int &x) {
       x++;
    }
    
    int i = 41;
    increment(i); // <--- this IS pass-by-reference
                  //      doesn't compile in C (nor in Objective-C)
    

    2023-01-19 17:57 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有