取决于多个因素,包括性能考量、资源管理、参数修改的需求,数据的复制,修改,生命周期,内存管理等
值传递 | 引用传递 & | 指针传递 * |
传递的是该值的副本, 而不是原始数据本身。 | 传递的是实际数据的引用(即内存地址),而不是实际数据本身。不创建实参的副本,避免对象拷贝的开销,提高效率。 | 传递的是内存地址的副本,这个地址指向实际的数据。 |
修改函数内的值类型变量不会影响原始值。 | 修改函数内的引用类型变量会影响原始变量。 因为它们引用的是同一块内存地址。 | 通过修改指针所指向的数据可以直接访问且会影响原始数据。 因为指针和原始变量引用的是同一块内存地址。 |