首页 > 其他分享 >参数传递

参数传递

时间:2024-08-20 22:38:00浏览次数:4  
标签:cout int number 参数传递 ++ fun main

C++参数传递

1.按值传递

import std;
void fun(int number) {number ++;}

int main(){
    int a = 1;
    fun(a);
    cout << n << endl;
}

输出:1

这种情况下,函数调用时是copy了a的值在内存中存了一个副本,调用结束会把副本释放掉。所以不会改变a的值。

缺点:无法改变实参的值,并且会花销额外的内存。

2.通过引用(&)传递

使用这种方法,我们可以对实参进行操作,而且不会浪费内存。

我们不是创建一个虚拟参数并传递它的值,而是传递变量的别名

import std;
void fun(int &number){number++;}

int main(){
    int a = 1;
    fun(a);
    cout << n << endl;
}

OUTPUT:2

在调用函数时相当于

int main(){
    int a = 1;
    {
    int& number = a;
    number++;
    }
    cout << n << endl;
}

3.使用常量引用(const &)传递值

为什么要这样做呢?

通常使用const参数的原因是我们不想要改变传入参数的值,使用&传递是为了改变传入参数的值。这不是冲突了吗?

原来是我们不想浪费任何内存并且不想更改变量名的值。

void fun(const int &number) { number++; }

int main() {
  int a = 30;
  fun(a);
  cout << a << endl;
}

output:error:assignment of read-only reference 'number'

出现error了,因为在函数中我们对一个cosnt int做了自增改变。

如果函数功能只是打印number值就没问题。

补充:上述函数 fun 可以在 cast 的帮助下改变它的值。

标签:cout,int,number,参数传递,++,fun,main
From: https://www.cnblogs.com/sythage/p/18370468

相关文章

  • 【数据结构与算法第一章】编程基础:变量与数据类型、指针、结构体、数组与链表、程序结
    目录【数据结构与算法第一章】编程基础1.1变量与数据类型1.2指针1.3结构体1.4数组和链表1.5程序结构1.6函数中参数的传递1.7C语言中运算符的含义【数据结构与算法第一章】编程基础1.1变量与数据类型变量:    ①在C语言中,所有变量必须先声明后使用......
  • JAVA基础之-参数传递
    准备整理一个系列,这是系列的第一篇。这是一个经典的问题,也是JAVA程序员所必须掌握的。一、小结论和例子1.1结论内容没有多少,可以先说结论:变量的表示和参数传递变量是如何表示,尤其是参数是如何表示的 存储则具体看变量是什么类型:类静态、实例变量、方法变量表示-基本类......
  • StringBuffer作为参数传递
    packagecom.shujia.day11;publicclassstringBufferDemo1{publicstaticvoidmain(String[]args){Strings1="hello";//StringBuffer作为参数传递StringBuffersb1=newStringBuffer("hello");StringBuf......
  • String和StringBuffer作为参数传递的区别
    String和StringBuffer作为参数传递,相同的是都重写了父类Object的toString方法,所以展示出来的不是地址值,而是对象内容以下是两者的不同:一、String作为参数传递:因为没有new,所以内容只在方法区,有相同的字符就会指向常量池中同一个地址值,没有就会创建一个新的,但是方法调用的时候,只......
  • 参数传递
    publicclassCanShuDemo{publicstaticvoidmain(String[]args){inta=10;intb=20;System.out.println("a:"+a+",b:"+b);//a:10,b:20change(a,b);System.out.println("a:&qu......
  • C++中函数调用的过程(包括参数传递、栈帧管理等)是怎样操作的
    在C++中,函数调用的过程是一个复杂但高效的操作,涉及到多个方面,包括参数传递、栈帧管理、返回机制等。下面将详细解释这些过程:1.参数传递C++中,函数参数的传递方式主要有两种:值传递(PassbyValue)和引用传递(PassbyReference或PassbyPointer)。值传递:在值传递中,函数参数是......
  • 线程参数传递 同一个结构体指针,并且要传递id(0-xx)的方法
    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档文章目录前言一、代码示例?总结前言提示:这里可以添加本文要记录的大概内容:线程参数传递同一个结构体指针,并且要传递id(0-xx)的方法在创建线程时候可能会遇到不仅要传递全局唯一的结构体指针给线程,还......
  • ValueError:无法识别的关键字参数传递给 LSTM:Keras 中的 {'batch_input_shape'}
    我正在尝试在TensorFlow中使用Keras构建和训练有状态LSTM模型,但在指定batch_input_shape参数时不断遇到ValueError。错误消息:ValueError:UnrecognizedkeywordargumentspassedtoLSTM:{'batch_input_shape':(1,1,14)}这是我的代码的简化版本:import......
  • Neo4j:如何将参数传递给关系?
    neo4j官网指出,我们不能向关系类型传递参数。但是,我在批量添加嵌入时需要向关系传递参数。Neo4j通过driver.execute_query('''UNWIND$moviesasmovieMATCH(m:Movie{title:movie.title,plot:movie.plot})CALLdb.create.setNodeVectorPrope......
  • 深入探讨Spring Boot中的参数传递
    深入探讨SpringBoot中的参数传递在SpringBoot开发中,参数传递是一个非常常见且重要的操作。无论是处理HTTP请求,还是在方法之间传递数据,理解和掌握参数传递的各种方式都能让我们的代码更加简洁和高效。今天,我们就来深入探讨一下SpringBoot中的参数传递。1.基础知识:HTTP请求参......