亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

C語言:傳值與傳址交換整數(shù)

 更新時(shí)間:2021年08月06日 11:31:56   作者:rampant boy  
這篇文章主要給大家介紹了關(guān)于C語言中傳值與傳址之間交換整數(shù)的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用C語言具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧

傳值調(diào)用

要想交換兩個(gè)整數(shù)的值,我們可以自定義一個(gè)函數(shù),來實(shí)現(xiàn)這個(gè)過程。具體代碼如下:

#include <stdio.h>

void Swap1(int x, int y)
{
	int z = 0;
	z = x;
	x = y;
	y = z;
}

int main()
{
	int a = 10;
	int b = 20;
	pirntf("交換前:a=%d  b=%d", a, b);
	Swap1(a, b);
	pirntf("交換前:a=%d  b=%d", a, b);
	return 0;
}

按照一般的邏輯,大多數(shù)人應(yīng)該都會(huì)這樣寫出這樣的程序。但這個(gè)程序是否能達(dá)到目的呢》我們可以運(yùn)行檢驗(yàn)一下。

image-20210713102225191

很顯然,a,b兩個(gè)數(shù)的值并未發(fā)生改變。我們可以通過調(diào)試的方法來找出原因。

image-20210713102531340

通過這里我們可以知道,x,y的確接收了a,b的值,但是,a,b,x,y的地址都不相同,也就是說,這四個(gè)變量在內(nèi)存中開辟了四塊空間。那么,在Swap函數(shù)中,x,y的值的確互換了,但這僅僅是在0x0118fd90和0x0118fd94這兩塊空間里進(jìn)行的交換,與a,b無關(guān).

image-20210713102921736

所以,這段代碼無法交換兩個(gè)整數(shù)的值。x,y僅僅接收了a,b的值,這個(gè)過程也被稱為傳值調(diào)用。

傳址調(diào)用

通過前面的分析,我們可以知道,要想交換a,b的值,需要在a,b所開辟的兩塊空間內(nèi)進(jìn)行操作。根據(jù)我們所學(xué)的知識(shí),這時(shí),我們就應(yīng)該用到指針。因?yàn)橹羔樧兞靠梢源娣诺刂贰>唧w代碼如下:

#include <stdio.h>

void Swap2(int* pa, int* pb)
{
	int z = 0;
	z = *pa;
	*pa = *pb;
	*pb = z;
}

int main()
{
	int a = 10;
	int b = 20;
	printf("交換前:a=%d  b=%d\n", a, b);
	Swap2(&a, &b);
	printf("交換后:a=%d  b=%d\n", a, b);
	return 0;
}

運(yùn)行結(jié)果為:

image-20210713104107093

此時(shí),這段代碼就很好的解決了我們的問題。pa,pb用來接收a,b的地址,這個(gè)過程稱為傳址調(diào)用。

綜上所述,Swap1在被調(diào)用的時(shí)候,實(shí)參傳給形參,其實(shí)形參是實(shí)參的一份臨時(shí)拷貝,改變形參,不能改變實(shí)參。Swap2在被調(diào)用的時(shí)候,函數(shù)和函數(shù)外邊的變量建立起正真的聯(lián)系,也就是函數(shù)內(nèi)部可以直接操作函數(shù)外部的變量。這也就是傳值調(diào)用和傳址調(diào)用的區(qū)別。

總結(jié)

本篇文章就到這里了,希望能給你帶來幫助,也希望您能夠多多關(guān)注腳本之家的更多內(nèi)容!

相關(guān)文章

  • Pipes實(shí)現(xiàn)LeetCode(193.驗(yàn)證電話號(hào)碼)

    Pipes實(shí)現(xiàn)LeetCode(193.驗(yàn)證電話號(hào)碼)

    這篇文章主要介紹了Pipes實(shí)現(xiàn)LeetCode(193.驗(yàn)證電話號(hào)碼),本篇文章通過簡(jiǎn)要的案例,講解了該項(xiàng)技術(shù)的了解與使用,以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下
    2021-08-08
  • 利用Matlab制作一款3D版2048小游戲

    利用Matlab制作一款3D版2048小游戲

    2048作為一款經(jīng)典的小游戲,相信很多人都玩過吧?但是3D版的2048不知道有沒有人玩過呢?本文將用Matlab制作一個(gè)3D版的2048小游戲,快跟隨小編一起動(dòng)手試一試吧
    2022-02-02
  • C++實(shí)現(xiàn)通訊錄管理系統(tǒng)項(xiàng)目

    C++實(shí)現(xiàn)通訊錄管理系統(tǒng)項(xiàng)目

    這篇文章主要為大家詳細(xì)介紹了C++實(shí)現(xiàn)通訊錄管理系統(tǒng)項(xiàng)目,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-06-06
  • Opencv圖像處理之輪廓外背景顏色改變

    Opencv圖像處理之輪廓外背景顏色改變

    這篇文章主要為大家詳細(xì)介紹了Opencv圖像處理之輪廓外背景顏色改變,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2019-05-05
  • C++日志庫log4cplus的使用詳解

    C++日志庫log4cplus的使用詳解

    C++實(shí)現(xiàn)的log4cplus日志庫是一種易于使用的C?++日志記錄API,可提供線程安全,靈活且任意粒度的日志管理和配置控制。這篇文章就來和大家講講log4cplus的使用吧
    2023-03-03
  • c/c++語言位域注意事項(xiàng)分析

    c/c++語言位域注意事項(xiàng)分析

    所謂“位域”是把一個(gè)字節(jié)中的二進(jìn)位劃分為幾個(gè)不同的區(qū)域, 并說明每個(gè)區(qū)域的位數(shù)。每個(gè)域有一個(gè)域名,答應(yīng)在程序中按域名進(jìn)行操作
    2013-09-09
  • C++內(nèi)核對(duì)象封裝單實(shí)例啟動(dòng)程序的類

    C++內(nèi)核對(duì)象封裝單實(shí)例啟動(dòng)程序的類

    這篇文章主要介紹了利用C++內(nèi)核對(duì)象封裝的類,程序只能運(yùn)行單個(gè)實(shí)例,可防止多次啟動(dòng),大家參考使用吧
    2013-11-11
  • C語言字符串原地壓縮實(shí)現(xiàn)方法

    C語言字符串原地壓縮實(shí)現(xiàn)方法

    這篇文章主要介紹了C語言字符串原地壓縮實(shí)現(xiàn)方法,包含了字符串的遍歷與轉(zhuǎn)換等操作,是很實(shí)用的操作技巧,需要的朋友可以參考下
    2014-09-09
  • C語言柔性數(shù)組詳解

    C語言柔性數(shù)組詳解

    這篇文章主要介紹了C語言柔性數(shù)組,通過實(shí)例分析了不完整類型、結(jié)構(gòu)體及柔性數(shù)組等概念,需要的朋友可以參考下,希望能夠給你帶來幫助
    2021-10-10
  • C/C++雜記 虛函數(shù)的實(shí)現(xiàn)的基本原理(圖文)

    C/C++雜記 虛函數(shù)的實(shí)現(xiàn)的基本原理(圖文)

    這篇文章主要介紹了C/C++雜記 虛函數(shù)的實(shí)現(xiàn)的基本原理(圖文),需要的朋友可以參考下
    2016-06-06

最新評(píng)論