欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

C++函數(shù)三種傳參形式(指針傳遞、引用傳遞、值傳遞)

 更新時間:2024年03月19日 10:07:22   作者:學不會2233  
不論是哪種參數(shù)傳遞方式,都有形參和實參之分,本文主要介紹了C++函數(shù)三種傳參形式(指針傳遞、引用傳遞、值傳遞),具有一定的參考價值,感興趣的可以了解一下

前言

不論是哪種參數(shù)傳遞方式,都有形參和實參之分,都會在調(diào)用函數(shù)時進行一次復制,將實參的值賦予形參。對于值傳遞,實參形參概念較好區(qū)分,但對于地址傳遞,形參實參指向的地址相同,可能會產(chǎn)生操作的是同一變量的想法,實則不然。(這也是理解二級指針作用的核心知識點)

指針傳遞

變量形式、函數(shù)原型及對應傳參形式:

  • 變量:int a = 0; int *b = 0;
  • 函數(shù)原型:void func(int *arg);
  • 傳參形式:func(&a); func(b);

解釋:

函數(shù)得參數(shù)類型是int指針類型,接受的參數(shù)的一個地址。因此,對于普通變量a,需要先用&符號取地址后傳入,故傳入&a。對于指針b,指針就是地址,因此直接傳入b即可。

#include <iostream>
using namespace std;
void exchange(int *a, int *b)
{
	int temp;
	temp = *a;
	*a = *b;
	*b = temp;
}
 
int main()
{
	int x, y;
	cin >> x >> y;
	exchange(&x, &y);
	cout << x << y;
}

引用傳遞

最復雜的是引用傳遞。此次只講解最基礎(chǔ)簡單的使用。

變量形式、函數(shù)原型及對于傳參形式:

  • 變量:int a = 0; int *b = 0;
  • 函數(shù)原型:void func(int &arg);
  • 傳參形式:func(a); func(b);func(*b)

解釋:

函數(shù)的參數(shù)類型是引用類型。對于變量a,直接傳入a。對于指針b,可以選擇傳入地址b或者傳入b指向的值*b。

區(qū)別:待定

引用的本質(zhì):待定

#include <iostream>
using namespace std;
void exchange(int &a, int &b)
{
	int temp;
	temp = a;
	a = b;
	b = temp;
}
 
int main()
{
	int x, y;
	cin >> x >> y;
	exchange(x, y);
	cout << x << " " << y;
}

值傳遞

變量形式、函數(shù)原型及對應傳參形式:

  • 變量:int a = 0; int *b = 0;
  • 函數(shù)原型:void func(int arg);
  • 傳參形式:func(a); func(*b);

解釋:

函數(shù)的參數(shù)類型是int類型,接收的值是int型變量的值。因此,對于變量a,本身就是int型變量,故直接傳入。對于指針變量b,是需要用*符號進行解引用獲取指針指向的值,故傳入*b。

#include <iostream>
using namespace std;
void exchange(int a, int b)
{
	int temp;
	temp = a;
	a = b;
	b = temp;
}
 
int main()
{
	int x, y;
	cin >> x >> y;
	exchange(x, y);
	cout << x << " " << y;
}

總結(jié):

1.引用傳遞和值傳遞都是傳地址,可理解為實參和形參的內(nèi)存地址相同,在函數(shù)中的賦值操作在函數(shù)結(jié)束后仍會保留(只要被賦值的變量仍存在)。而值傳遞傳入的是實參的值,調(diào)用函數(shù)時會進行拷貝操作將實參的值賦予形參,實參和形參的地址不同,因此在函數(shù)體內(nèi)對形參的賦值操作不會改變實參的值。

到此這篇關(guān)于C++函數(shù)三種傳參形式(指針傳遞、引用傳遞、值傳遞)的文章就介紹到這了,更多相關(guān)C++函數(shù)傳參內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • C++基于Boost.Asio實現(xiàn)端口映射器的過程詳解

    C++基于Boost.Asio實現(xiàn)端口映射器的過程詳解

    Boost.Asio 是一個功能強大的 C++ 庫,用于異步編程和網(wǎng)絡(luò)編程,它提供了跨平臺的異步 I/O 操作,在這篇文章中,我們將深入分析一個使用 Boost.Asio 實現(xiàn)的簡單端口映射服務(wù)器,文中有詳細的代碼講解,需要的朋友可以參考下
    2023-11-11
  • 詳解C++ const修飾符

    詳解C++ const修飾符

    const 是 constant 的縮寫,const可以幫我們避免無意之中的錯誤操作,本文給大家介紹C++ const修飾符的相關(guān)知識,通過實例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友參考下吧
    2021-05-05
  • C++11 <future>中std::promise 介紹

    C++11 <future>中std::promise 介紹

    這篇文章主要介紹了C++11 <future>中std::promise 介紹,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-02-02
  • C語言實現(xiàn)的一個萬年歷小程序

    C語言實現(xiàn)的一個萬年歷小程序

    這篇文章主要介紹了C語言實現(xiàn)的一個萬年歷小程序,具有一定的參考價值,做C語言日期計算的朋友可以參考下
    2014-07-07
  • C++11新特性std::tuple的使用方法

    C++11新特性std::tuple的使用方法

    這篇文章主要介紹了C++11新特性-std::tuple的使用方法,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-10-10
  • C及C++中typedef的簡單使用介紹

    C及C++中typedef的簡單使用介紹

    C/C++中關(guān)鍵字typedef的理解不是多透徹,今天小編抽空給大家分享下C及C++中typedef的簡單使用介紹,需要的朋友可以參考下
    2016-10-10
  • C語言結(jié)構(gòu)體指針引用詳解

    C語言結(jié)構(gòu)體指針引用詳解

    C語言中結(jié)構(gòu)體指針,可細分為指向結(jié)構(gòu)體變量的指針和指向結(jié)構(gòu)體數(shù)組的指針。本文將詳細為大家介紹一下這兩種結(jié)構(gòu)體指針如何引用,需要的小伙伴可以參考一下
    2021-12-12
  • C++中輸出十六進制形式的字符串

    C++中輸出十六進制形式的字符串

    這篇文章主要給大家介紹了C++中輸出十六進制形式的字符串,文中給出了詳細的介紹,有需要的朋友可以參考借鑒,下面來一起看看吧。
    2016-12-12
  • C語言數(shù)組任意位置插入一個元素方法

    C語言數(shù)組任意位置插入一個元素方法

    這篇文章主要給大家分享C語言數(shù)組任意位置插入一個元素方法,
    2021-11-11
  • C++通過ofstream和ifstream實現(xiàn)文件讀寫

    C++通過ofstream和ifstream實現(xiàn)文件讀寫

    本文詳細介紹了C++中通過ofstream和ifstream進行文件的讀寫操作,包括文件打開模式的選擇、錯誤處理策略以及二進制文件的特殊處理,重點講解了如何使用這些類進行文本和二進制文件的讀寫,并強調(diào)了正確處理文件操作中可能出現(xiàn)的錯誤,需要的朋友可以參考下
    2025-03-03

最新評論