小工具      在线工具  汉语词典  dos游戏  css  js  c++  java

值传递与引用传递

SHARE,变量 额外说明

收录于:112天前

按值传递和按引用传递之间的主要区别在于函数是否应该是原始变量。一般来说,值传递可以理解为变量值的简单复制,而引用传递则是对值地址的引用,而变量的地址是变量值的唯一标识,而原来的变量可以通过地址进行更改。

引用传递过程如下,引用传递一般发生在形参中,作为函数的过客。
在这里插入图片描述

import (
	"fmt"
)
func main() {
    

	b := 10
	add(b)
	fmt.Printf("%d", b)
}

func add(a int) {
    
	a = a + 100
}

// result
//a = 10

引用传递取决于变量的地址。大多数编程语言都使用指针来表示变量地址类型。

在这里插入图片描述
由于指针通过变量地址来改变值,因此函数的逻辑直接操作地址使其值发送改变。

import (
	"fmt"
)

func main() {
    
	b := 10
	delete(&b)
	fmt.Printf("%d\n", b)
}

func delete(a *int) {
    
	*a = 100 - *a
}

//result
// 90

直接操作函数中的全局变量,通过指针改变函数的作用域。

在Java中,变量是通过引用传递的,一般没有直接的值传递。

public static void main(String args[]){
    
	int a = 10;
	add(a);
	System.out.println(a);
}

public void add (int a){
    
	a = a + 1000;
}

在Go语言中,make关键字和new关键字都可以产生变量。前者产生切片、数组等,后者是指向基本数据类型的指针。

func main() {
    
	a := new(int)
	fmt.Println(a)
}

// result 
// 0xc0000180a8
. . .

相关推荐

额外说明

Oracle数据库系统自带表空间详解

需求:需要整理现场用户创建的表空间以及其存储数据,进行规范化管理。在整理用户现场建立的表空间时,需要排除掉非用户创建的表空间,所有首先需要那些表空间是用户创建的,那些是Oracle自带的。 本机测试建立一个新库,发现自带表空间如下: 下面对每一个表空间进

额外说明

使用了国产界面管理神器Apifox后,我果断“逃离”了Postman。

在当前行业发展背景下,绝大部分项目都是基于前后端分离的架构进行的,由前后端、测试、运维等不同的团队共同开发,那么团队之间能否很好的 协同合作 无疑直接决定着项目的最终效果。 但是在实际开发流程中,团队之间的协同是很低效的,在联调时极易出现定义不一致等诸多

额外说明

day42_log4j

log4j的使用 导入相关jar包(这里是用的maven, pom.xml) <dependencies> <!--导入log4j--> <dependency> <groupId>log4j</groupId>

额外说明

python中如何方便地加载dataframe数据到gui界面(pyqt)中

背景需求 基本上Python中都是习惯用Dataframe处理数据,效率高,读写多样并且方便。但是拿到了正确的数据还需要展示到界面上,毕竟大多数应用都是需要交互界面的。那么如何方便地把df数据展示到gui界面呢? 解决方案 我这里用的是Pyqt做gui界

额外说明

Shell 脚本一键安装,Oracle 21C 单机版抢先体验

目录 - 前言 - 环境准备 ☀️ 21C 单机部署 Vagrant 部署主机环境 1、Vagrant 镜像源添加 2、配置 VagrantFile 3、准备安装介质和脚本 4、初始化主机环境 Oracle 21C 单机脚本安装 - 前言 2021年8月

额外说明

eureka注册中心搭建与使用

soringcloud是目前比较流行的微服务治理框架之一,其自身提供了一套完善的分布式服务治理方案,本篇先简单分享一下springcloud的第一个组件,服务注册中心 —— eureka eueka按逻辑上可以划分为3个模块,eureka-server,

额外说明

ssm框架整合和一个注册案例(这个案例我只是记录一下,我自己看懂就可以)

ssm框架整合: 1.配置springMVC a. 导入相关jar包,这里我不做演示 b. 配置web.xml中的前端控制器,SpringMVC全站乱码解决过滤器。 <!--前端控制器--> <servlet> <servlet

额外说明

【Java 基础篇】Java Function 接口详解

在 Java 编程中,Function 接口是一个非常重要的函数式接口,它允许你定义一个接受一个参数并产生结果的函数。Function 接口通常在各种数据处理和转换操作中使用,例如集合处理、流处理以及函数式编程。 本文将详细介绍 Function 接口的

额外说明

2023.9.7 关于 TCP / IP 的基本认知

目录 网络协议分层 TCP/IP 五层(四层)模型 应用层 传输层 网络层(互联网层) 数据链路层(网络接口层) 物理层  网络数据传输的基本流程 网络协议分层 为什么需要分层? 分层之后,类似于面向接口编程,定义好两层的接口规范,让双方遵循这个规范来对

ads via 小工具