所有分类
  • 所有分类
  • 后端开发
值传递VS引用传递:原版对决

值传递VS引用传递:原版对决

1、值传递值传递的一个关键特点是,函数接收的是参数的实际值,而不是对参数的引用。2、引用传递与值传递不同,引用传递是将参数的地址或引用传递给函数。引用传递的一个关键特点是,函数接收的是对原始数据的引用,而不是数据的副本。

说到传参方式,那得说说这俩咱们经常遇到的玩意儿了—值传递和引用传递。别看它们听着复杂,说穿了不过就俩词汇,到底差别在哪里?

值传递VS引用传递:原版对决

你知道为啥叫值传递吗?其实就是你传给函数的那个东西,它只是原值的个复制品。别觉得在函数里面弄啥就能改原本的变量,其实只能动那复制品而已。这种方法在我们平时用的C、C++里很常见,主要用来处理小数据类型,比如整数啊、小数啦之类的。

传参过程中,传址和传值是不一样哒。传址,就是把某个变量的地址给出去了,也就相当于你手上捏着那家伙的门牌号。而你用这个“地址”去操弄这个变量,效果可不就是直接在动他本人吗?跟传值比起来,就像是碰到真的那个原版一样。但这得看是用啥编程语言,比如 C++的话,你就可以利用指针或引用让这种传参方式发挥作用咯。

来聊聊值传递这事儿!简单说,就是把参数的值搬过去而已!你改动这个搬来的,跟本来的可没关系!譬如咱们熟悉的C语言老大夫告诉我们:

void increment(int a) {  
    a = a + 1;  
}  
  
int main() {  
    int x = 5;  
    increment(x);  
    printf("%dn", x); // 输出仍然是5,因为函数increment操作的是x的副本,不影响x本身  
    return 0;  
}

传递引用这个事儿挺奇特的,它传输的不是原数据本身,而是指向原数据的指针,这样改变引用就等同于修改实际的数据!看看这例子:

你听说过只传参吗?这种传参就只是复制了下原来那个参数,就算改了也不会影响到本来的数据。但是,引用传参就不一样了,这玩意儿直接把原始数据的位置给你了,所以一旦你改动了用这引用的数据,那么原本的那个也就会跟着变!

通俗地讲,val传值就是搬砖,ref传址就是借用。搬砖再改也不影响原版,而借用,你修改一处,其他地方都会相应更改。

其实,这俩都不错,各有优缺点。得看具体情况挑呗!但无论是值传递还是引用传递,都是咱们编程时必须了解的知识点。晕乎乎的对吗?简而言之,值传递就是给别人一个复制品玩儿,吵架什么的都影响不到原版的;但引用传递,可就直接接管了 agents 式家庭,有任何不满足,立马就给人家翻了天。虽各有所长,但还得看实际需求挑!现在明白点儿了?快来分享下你的理解,大家一起聊聊天!

void increment(int* a) {  
    *a = *a + 1;  
}  
  
int main() {  
    int x = 5;  
    increment(&x);  
    std::cout << x << std::endl; // 输出是6,因为函数increment直接修改了x的值  
    return 0;  
}

原文链接:https://www.icz.com/technicalinformation/web/2024/03/11675.html,转载请注明出处~~~
0

评论0

请先
注意:请收藏好网址www.icz.com,防止失联!站内免费资源持续上传中…!赞助我们
显示验证码
没有账号?注册  忘记密码?