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

值传递与引用传递

SHARE,变量 额外说明

收录于:152天前

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

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

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
. . .

相关推荐

额外说明

html - 在表单上做笔记

<form id="forms"> <input type="text" name="input1" value="11111" /><br /> <input type="text" name="input2" value="22222"

额外说明

黑客技术(自学法)-网络安全

前言 前几天发布了一篇 网络安全(黑客)自学 没想到收到了许多人的私信想要学习网安黑客技术!却不知道从哪里开始学起!怎么学?如何学? 今天给大家分享一下,很多人上来就说想学习黑客,但是连方向都没搞清楚就开始学习,最终也只是会无疾而终!黑客是一个大的概念,

额外说明

为什么明明我学得很好了,却总是找不到工作,我这三个月白学了?

有的公司本身侧重功能测试也不要我呢?我总结的原因如下: 1、功能测试已经饱和,这家公司根本不缺人,HR为了绩效骗面试; 2、公司现在偏重功能测试,未必未来就不重视自动化,现在招聘就是要储备自动化人才,而你不只会功能测试,自动化一点都不懂; 3、招聘嘛,一

额外说明

Codeforces Round 859 (Div. 4)

蒟蒻第一次打CF,最简单的Div4只A了4道简单题,后面一个小时都死磕在F题上。一开始用了GCC编译器,第一题都编译报错,呜呜呜。后来才发现应该用G++。 A #include<iostream> using namespace std; int mai

额外说明

某组件无法启动排错特殊思路

下午启动hive的时候无法启动,没有任何报错,也没有任何反应,命令行直接跳到下一行 排查配置文件:都是原来的配置,发生错误未修改配置排查后也未发现错误 排查环境变量:因为直接在hive/bin下启动,所以肯定不是环境变量的问题 采用/bin/bash执行

额外说明

阿里云Linux(Centos和Ubuntu)系统下安装Tomcat并配置

一、目标: 通过我们之前在阿里云Linux系统CentOS下安装jdk并配置环境变量的成功,接下来我们就要 在CentOS6.9 64位上安装Tomcat并配置在/var/opt/Linux目录下 这里我们会用到Xshell:可参看该博客:Linux安装

额外说明

Python对命令提示符cmd以及操作系统的一些操作

命令提示符,系统信息,目录与文件的操作 import os,sys; #可执行命令提示符的命令 os.system('ping www.163.com -t'); os.system('dir');#列出目录 os.system('notepad');#

额外说明

YoloV8改进策略:SPD-Conv加入到YoloV8中,让小目标无处遁形

摘要 SPD-Conv是一种新的构建块,用于替代现有的CNN体系结构中的步长卷积和池化层。它由一个空间到深度(SPD)层和一个非步长卷积(Conv)层组成。 空间到深度(SPD)层的作用是将输入特征图的每个空间维度降低到通道维度,同时保留通道内的信息。这

额外说明

Python程序:输出斐波那契数列

定义一个Python函数fib(n),返回斐波那契数列前n项构成的列表。 def fib(n): fib = [] if n == 1: fib.append(1) elif n == 2: fib

额外说明

php调用mysql存储过程和函数的方法

 存储过程和函数是MySql5.0刚刚引入的。关于这方面的操作在PHP里面没有直接的支持。但是由于Mysql PHP API的设计,使得我们可以在以前的PHP版本中的mysql php api中支持存储过程和函数的调用。 在php中调用存储过程和函数。

ads via 小工具